leetcode 40 組合總和 II

2021-10-09 07:55:24 字數 1730 閱讀 4671

給定乙個陣列 candidates 和乙個目標數 target ,找出 candidates 中所有可以使數字和為 target 的組合。

candidates 中的每個數字在每個組合中只能使用一次。

說明:所有數字(包括目標數)都是正整數。

解集不能包含重複的組合。 

示例 1:

輸入: candidates = [10,1,2,7,6,1,5], target = 8,

所求解集為:

[[1, 7],

[1, 2, 5],

[2, 6],

[1, 1, 6]

]示例 2:

輸入: candidates = [2,5,2,1,2], target = 5,

所求解集為:

[[1,2,2],

[5]]

下面先附上**:

這道題的考點還是使用回溯法去解決問題,而且重點在於題目中給定的元素不可重複使用,所以這就涉及到了如何在二維陣列中去重,二維陣列去重和一維陣列不同,下面貼上其他博主所使用的去重方法:(原文:

一維的list去重可以用set(list),但是二維的list轉set就會報錯 unhashable type: 『list』

原因是set傳進來的是不可雜湊的變數

python中那麼哪些是可雜湊元素?哪些是不可雜湊元素?

可雜湊的元素有:int、float、str、tuple

不可雜湊的元素有:list、set、dict

為什麼 list 是不可雜湊的,而 tuple 是可雜湊的

(1)因為 list 是可變的在它的生命期內,你可以在任意時間改變其內的元素值。

(2)所謂元素可不可雜湊,意味著是否使用 hash 進行索引

(3)list 不使用 hash 進行元素的索引,自然它對儲存的元素有可雜湊的要求;而 set 使用 hash 值進行索引

正確做法:將list轉成tuple,這樣就可以用set去重。

dic = list(set([tuple(t) for t in dic]))

dic = [list(v) for v in dic]

leetcode 40 組合總和

給定乙個陣列candidates和乙個目標數target,找出candidates中所有可以使數字和為target的組合。candidates中的每個數字在每個組合中只能使用一次。說明 示例 1 輸入 candidates 10,1,2,7,6,1,5 target 8,所求解集為 1,7 1,2,...

leetcode40 組合總和 II

給定乙個陣列 candidates 和乙個目標數 target 找出 candidates 中所有可以使數字和為 target 的組合。candidates 中的每個數字在每個組合中只能使用一次。說明 所有數字 包括目標數 都是正整數。解集不能包含重複的組合。示例 1 輸入 candidates 1...

LeetCode 40 組合總和 II

給定乙個陣列candidates和乙個目標數target,找出candidates中所有可以使數字和為target的組合。candidates中的每個數字在每個組合中只能使用一次。說明 示例 1 輸入 candidates 10,1,2,7,6,1,5 target 8,所求解集為 1,7 1,2,...