Leetcode筆記(找不重複的組合 )

2021-10-08 12:51:52 字數 1326 閱讀 9282

40 - 77

有多個相同的元素,但要組成沒有重複的組合,有兩個方法做:

參考39題的做法,用set避免重複組合

參考39題的做法,但可以讓同一層的數字不重複

//set

class solution

if(target <

0|| i >= candidates.

size()

|| target < candidates[i]

)return

;for

(int k = i; k < candidates.

size()

; k++)}

public:

vectorint>>

combinationsum2

(vector<

int>

& candidates,

int target)

;sort

(candidates.

begin()

, candidates.

end())

;helper

(candidates, target,0)

;return ans;}}

;

//讓處於同一層中(dfs樹),沒有重複的數字

class solution

for(

int k = i; k < candidates.

size()

; k++)}

public:

vectorint>>

combinationsum2

(vector<

int>

& candidates,

int target)

;sort

(candidates.

begin()

, candidates.

end())

;helper

(candidates, target,0)

;return ans;}}

;

做法與39題類似

class solution

for(

int j = start; j <= n; j++)}

public:

vectorint>>

combine

(int n,

int k)

;helper

(n, k,0,

1);return ans;}}

;

不重複排列的生成

全排列的話比較好打。可,當乙個集合中有許多重複的元素,如 如何生成不重複的排列?易知答案只有乙個。生成不重複排列,這很實用。思想 把重複的數字不在看做多個元素,而是看做乙個元素的多個個數。然後遞迴生成時,新增在答案裡的是次數的減少。正確性 如果按照以上思路,那麼可以知道,每個因為我們把重複的元素當做...

記 不重複的數字

描述 把兩個整數的加法 減法 乘法這三個運算的得數,按照從小到大的順序輸出。如果得數中有重複的數字,那麼只要輸出一次。輸入兩個整數a和b 輸出把a b a b a b這三個數字按從小到大的順序輸出。如果其中有重複的數字,那麼只要輸出一次。每兩個數字之間保留乙個空格,最後不要換行。樣例輸入 2 0樣例...

提取不重複的整數

題目描述 輸入乙個 int 型整數,按照從右向左的閱讀順序,返回乙個不含重複數字的新的整數。輸入描述 輸入乙個 int 型整數。輸出描述 按照從右向左的閱讀順序,返回乙個不含重複數字的新的整數。示例1 輸入 9876673 輸出 37689 示例 1 網頁 ok linux 也 ok linux 編...