本文共 897 字,大约阅读时间需要 2 分钟。
Difficulty: 中等
给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。
**说明:**解集不能包含重复的子集。
示例:
输入: [1,2,2]输出:[ [2], [1], [1,2,2], [2,2], [1,2], []]
Language: ****
class Solution { public: vector> subsetsWithDup(vector & nums) { if(nums.size() <=0) return { }; sort (nums.begin() , nums.end() ); vector > res; //有序数组 vector _t; res.push_back({ }); dfs(res,nums,0, _t); return res; } void dfs(vector > &res, vector &nums,int index, vector & _temp ) { if (index >= nums.size() ) { return; } for (int i = index; i index && nums[i-1] == nums[i]) continue; _temp.push_back(nums[i]); vector _res = _temp; //复制 走过的路径 res.push_back(_res); dfs(res,nums,i+1, _temp); _temp.pop_back(); } } };
转载地址:http://oyyzi.baihongyu.com/