Leetcode刷題經驗

2021-10-08 15:17:33 字數 1135 閱讀 3630

該題可以很輕易地看出來是使用回溯 + 排序,排序是為了更好地剪枝。

解題思路:

假設輸入為can

dida

tes=

[2,3

,6,7

],ta

rget

=7。candidates=[2,3,6,7],target=7。

candid

ates

=[2,

3,6,

7],t

arge

t=7。

依次拿出can

dida

tescandidates

candid

ates

陣列中的元素,使之成為候選元素,例如找到 2,然後我們接著只要再找到所有能構成 7 - 2 = 5 的組合即可,這樣子,再返回來加上之前的 2 ,便找到了 7 的所有組合 ,其他元素同理。

對於這幅圖,這裡有幾點說明:

此外,由於是計算總和,那麼必然和數字出現的順序無關,那麼需要剪枝,在搜尋時,設定搜尋起點的下標 begin ,由於乙個數可以使用多次,下一層的結點從這個搜尋起點開始搜尋;並且在搜尋起點 begin 之前的數因為以前的分支搜尋過了,所以一定會產生重複,需要剪掉。還有,為了使得提公升剪枝效率,可以首先對陣列進行排序。

時間複雜度: 空間複雜度:

LeetCode刷題經驗2

以下文字 自 leetcode 100 斬!從第 1 題開始,到現在也差不多快一年了,回顧紀念一下。為什麼開始刷題?從大一就知道了 leetcode,但刷題總是三天打魚,兩天曬網,會發現刷過的題,隔一段時間再看還是需要很久才能再想起來,於是就萌發了刷一題總結一題的想法。另一方面,leetcode 上...

記一下leetcode刷題經驗

第一題最簡單的兩數之和,題目長這樣 給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。思路 一上來直接暴力解法選擇陣列的乙個 x 值,然後逐個遍歷陣列,找到數值等於 target x 的值,記錄下標,返回,但是暴力解法時間複雜...

開始刷題LeetCode

今天決定開始刷題,每天至少一題,如果題目確實沒有解決出來沒有關係,但是要保證每天至少接觸了一道新的題目!一定要堅持下去,現在是個菜鳥可能會感覺有點難度,堅持下去,總有一天會好的!今天是第一天,做的第乙個題目 reverse words in a string given an input strin...