給定乙個可能包含重複元素的整數陣列 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...