前言
最近一個多月發現以【天天一題】系列的形式來更新題目並不太合適,一是沒有足夠多合適的題目來更新,二是單獨拿出來一個題來說不太系統,應該把多個類似的題目放在一塊兒講,這樣纔可以達到觸類旁通的效果,因此決定中止【天天一題】系列,改成【每週小結】,而後每月再進行一次月總結,接下來言歸正傳。git
11月第1周共有20道題目,全部源碼以及對應的解題思路均勻開源到 GitHub,公衆號內回覆 「LeetCode」 獲取,具體分類以下。github
映射
該類題目經常使用數據結構爲:map, unordered_map, set 或 使用數組進行 hash 映射。數組
- 0242_valid_anagram
- 0290_word_pattern
- 0299_bulls_and_cows
以上三題都是字符或字符串之間的雙映射關係是否成立,根據狀況使用map、unordered_map 或 使用數組也能夠
- 0349_intersection_of_two_arrays
- 0350_intersection_of_two_arrays_ii
以上兩題是求解兩個數組的交集,第一個題目只須要找出有幾種不一樣的便可,不關心數量;第二個題目須要找出具體多少個相同字符,重複的也算進去
- 0383_ransom_note
這一個題目是查詢一個字符串中是否含有很多於另外一個字符串字符數量
深度優先搜索
腦筋急轉彎
這個題目比較有意思,剛開始想了不少種作法,可是感受太複雜了,應該會超時,想一想算了,看看官方題解,結果居然就一句搞定了,我就***了,看完解析後,只能說,服了,感興趣的能夠看看官方的解法,這裏就不贅述了。數據結構
數學
這類題目都是可使用數學方法解決的題目,並非太多的考察數據結構。app
- 0258_add_digits
- 0263_ugly_number
- 0268_missing_number
該題目有多種解法,第一種是根據遞增數組求解,而後計算差值就可獲得確實的數是哪個;第二種是官方給出的一種,經過異或運算得出,方法頗有意思;兩種方法複雜度相同
- 0303_range_sum_query_immutable
這個題目就是預先計算積分便可,瞭解圖像處理的都知道圖像積分這個概念,只不過這裏是一維數組,而圖像是二維的(不考慮顏色通道時),因此很簡單
- 0326_power_of_three
- 0342_power_of_four
這兩個題目是判斷給定數是不是某個數的冪,最簡單的方法就是暴力分解,一種作法是將給定數轉化成對應數的進制,即3進制或4進制,轉換後的數若是是它的冪,那麼必定只含有一個 1,因此判斷一下就好了;另外一種方法就是若是先找出最大的冪是多少,若是給定數也是,那麼最大冪必定能夠整除這個數,複雜度爲O(1)
二分法
二分法就沒什麼好說的了,就那些操做,左右各一個,中間數大了右邊的往左移動,中間數小了左邊的往右移動,直到結束便可。spa
- 0278_first_bad_version
- 0367_valid_perfect_square
- 0374_guess_number_higher_or_lower
反轉數組
反轉數組就是使用雙指針了,第一個題目直接進行便可,第二個題目只反轉元音字母,因此指針移動時再也不是++或--操做,而是以元音字母爲單位移動,也沒什麼複雜的。指針
- 0344_reverse_string
- 0345_reverse_vowels_of_a_string
位運算
根據計算機原理,使用二進制的異或和與運算實現加法,其中異或表示加法,與運算表示進位。orm