LeetCode 筆記 - 40. Combination Sum II
針對包含重複元素的 Combination Sum II 問題,本文分享如何運用深度優先搜尋(DFS)找出相加等於目標值的所有組合。重點解析了透過排序與條件判斷來避免產出重複結果的關鍵技巧,幫助讀者在處理回溯演算法時掌握更精細的剪枝策略。
⚠️ 舊文提醒:本文發佈於約 4 年前,部分內容或指令可能已過時,請斟酌參考。
給一個數列與目標數,請從數列找出相加的組合等於目標數,每個數字只能用一次
解題思維
如果沒解過第一題可以看這篇 LeetCode 筆記 - 39. Combination Sum
這題一樣是用 Depth First Search 跑一次就可以了
其中這裡有用到一個技巧來避開重複的組合1
2if i > last_index + 1 and candidates[i] == candidates[i- 1]:
continue
在這篇筆記有比較詳細的解釋 LeetCode 筆記 - 47. Permutations II
最後的小技巧就是先 Sorting,來跳過一些計算
程式碼
1 | class Solution: |
😎