苏州中车建设工程有限公司网站,宣城市网站建设,一张简单的网页多少钱,外贸网站小语种文章目录1. 题目信息2. 解题2.1 循环2.2 回溯1. 题目信息
给定一个可能包含重复元素的整数数组 nums#xff0c;返回该数组所有可能的子集#xff08;幂集#xff09;。
说明#xff1a;解集不能包含重复的子集。
示例:输入: [1,2,2]
输出:
[[2],[1],[1,2,2],[2,2],[1,2…
文章目录1. 题目信息2. 解题2.1 循环2.2 回溯1. 题目信息
给定一个可能包含重复元素的整数数组 nums返回该数组所有可能的子集幂集。
说明解集不能包含重复的子集。
示例:输入: [1,2,2]
输出:
[[2],[1],[1,2,2],[2,2],[1,2],[]
]来源力扣LeetCode 链接https://leetcode-cn.com/problems/subsets-ii 著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。
2. 解题
类似题目子集
2.1 循环
参考别人的比较难想出来。
class Solution {
public:vectorvectorint subsetsWithDup(vectorint nums) {vectorint sub;vectorvectorint ans;ans.push_back({});sort(nums.begin(), nums.end());int i, j, left 0, right;for(i 0; i nums.size(); i){if(i ! 0 (nums[i-1] ! nums[i]))left 0;right ans.size();for(j left; j right; j){sub ans[j];sub.push_back(nums[i]);ans.push_back(sub);}left ans.size()-(right-left);}return ans;}
};2.2 回溯 class Solution {
public:vectorvectorint subsetsWithDup(vectorint nums) {sort(nums.begin(), nums.end());vectorint sub;vectorvectorint ans;ans.push_back({});bt(nums,sub,ans,0);return ans;}void bt(vectorint nums,vectorint sub, vectorvectorint ans, int i){for(int idx i; idx nums.size(); idx){if(idx i nums[idx] nums[idx-1])continue;sub.push_back(nums[idx]);ans.push_back(sub);bt(nums,sub,ans,idx1);sub.pop_back();}}
};