LeetCode 90 子集 II 動態規劃思想

2021-10-03 06:35:34 字數 964 閱讀 5703

給定乙個可能包含重複元素的整數陣列 nums,返回該陣列所有可能的子集(冪集)。

說明:解集不能包含重複的子集。

示例:

輸入:[1

,2,2

]輸出:[[

2],[

1],[

1,2,

2],[

2,2]

,[1,

2],[

]]

思路:

因為給定的陣列可能包含重複元素,我們只考慮元素的種類,對每一種元素,考慮加入多少個就好了

狀態轉移:

求前 i(注意這裡是種不是個)元素組成的所有子集,問題轉化為:

【前 i-1 種元素組成的所有子集】+ 【前 i-1 種元素組成的所有子集,加上1,2,3....n個第 i 種元素】

對於第i種元素,出現k次,要考慮加入 1,2,3…k 個的情況,共 k 種情況

這裡其實就是考慮k個相同元素組成的不同子集,比如7,出現3次,那麼不同的子集就是 7,77,777

使用乙個【雜湊map】可以快速的儲存元素與其出現次數的對映

class

solution);

unordered_map<

int,

int> m;

for(

int i=

0; isize()

; i++

) m[nums[i]]++

;for

(auto it=m.

begin()

; it!=m.

end(

); it++)}

}return ans;}}

;

leetcode90子集II 中等

給定乙個可能包含重複元素的整數陣列 nums,返回該陣列所有可能的子集 冪集 說明 解集不能包含重複的子集。示例 輸入 1,2,2 輸出 2 1 1,2,2 2,2 1,2 在上乙個子集的基礎上,先對陣列排序,在push進result之前,先insert進set集合,即可保證子集不重複 class ...

leetcode演算法練習 90 子集 II

所有題目源 git位址 題目給定乙個可能包含重複元素的整數陣列 nums,返回該陣列所有可能的子集 冪集 說明 解集不能包含重複的子集。示例 輸入 1 2,2 輸出 2 1 1,2,2 2,2 1,2 方案 回朔 去重class solution return output 迴圈 0,nums.le...

leetcode筆記 90子集

題目 給定乙個可能包含重複元素的整數陣列nums,返回該陣列所有可能的子集 冪集 說明 解集不能包含重複的子集。示例 輸入 1,2,2 輸出 2 1 1,2,2 2,2 1,2 以下的 由一些深度優先搜尋的感覺,整體使用了遞迴的思路。public class solution private voi...