454.四數(shù)相加II?
建議:本題是?使用map?巧妙解決的問題,好好體會一下?哈希法?如何提高程序執(zhí)行效率,降低時(shí)間復(fù)雜度,當(dāng)然使用哈希法?會提高空間復(fù)雜度稼稿,但一般來說我們都是舍空間?換時(shí)間,?工業(yè)開發(fā)也是這樣讳窟。題目鏈接/文章講解/視頻講解让歼。
這個(gè)題如果暴力搜索直接嵌套四層循環(huán),時(shí)間復(fù)雜度是丽啡, 實(shí)際中不太可能接受的解法谋右。利用哈希表,把復(fù)雜度降低到就比較理想了碌上,分成兩組倚评,每組嵌套兩層循環(huán),注意到題目中限定了n<=200馏予, 也暗示著出題人期待的最優(yōu)解法最多是天梧。
Python 哈希表:
C++哈希表:
383.?贖金信??
建議:本題?和?242.有效的字母異位詞?是一個(gè)思路?,算是拓展題 題目鏈接/文章講解霞丧。
和242基本沒差呢岗。
Python 數(shù)組:
C++數(shù)組:
15.?三數(shù)之和?
建議:本題雖然和?兩數(shù)之和?很像,也能用哈希法蛹尝,但用哈希法會很麻煩后豫,雙指針法才是正解,可以先看視頻理解一下?雙指針法的思路突那,文章中講解的挫酿,沒問題?哈希法很麻煩。題目鏈接/文章講解/視頻講解愕难。
雙指針法早龟,細(xì)節(jié)處理關(guān)鍵點(diǎn)在于去重惫霸。
Python 雙指針:
注意while內(nèi)部對于left, right指針去重用while實(shí)現(xiàn)。
C++雙指針:
數(shù)組的基礎(chǔ)操作葱弟。
18.?四數(shù)之和??
建議:?要比較一下壹店,本題和?454.四數(shù)相加II?的區(qū)別,為什么?454.四數(shù)相加II?會簡單很多芝加,這個(gè)想明白了硅卢,對本題理解就深刻了。?本題?思路整體和?三數(shù)之和一樣的藏杖,都是雙指針将塑,但寫的時(shí)候?有很多小細(xì)節(jié),需要注意制市,建議先看視頻抬旺。 題目鏈接/文章講解/視頻講解弊予。
類似3Sum祥楣,雙指針減少一層O(n)。本題復(fù)雜度為汉柒。
Python 雙指針:
C++雙指針:
注意line100需要把int改成long误褪,原來的結(jié)構(gòu)里4個(gè)int相加會溢出。