[LeetCode] Subsets II
2016-04-04 21:06
225 查看
题目描述:
Given a collection of integers that might contain duplicates, nums, return all possible subsets.
Note:
Elements in a subset must be in non-descending order.
The solution set must not contain duplicate subsets.
For example,
If nums =
解题思路:
回溯法
Given a collection of integers that might contain duplicates, nums, return all possible subsets.
Note:
Elements in a subset must be in non-descending order.
The solution set must not contain duplicate subsets.
For example,
If nums =
[1,2,2], a solution is:
[ [2], [1], [1,2,2], [2,2], [1,2], [] ]
解题思路:
回溯法
class Solution { public: vector<vector<int>> subsetsWithDup(vector<int>& nums) { vector<vector<int>> result; if (nums.size() == 0) { return result; } sort(nums.begin(), nums.end()); vector<int> elem; for (int i = 0; i <= nums.size(); ++i) { subsets(nums, i, 0, result, elem); } return result; } private: void subsets(const vector<int> &nums, int len, int cur, vector<vector<int>> &result, vector<int> &elem) { if (elem.size() == len) { result.push_back(elem); return; } for (int i = cur; i < nums.size(); ++i) { elem.push_back(nums[i]); subsets(nums, len, i + 1, result, elem); elem.pop_back(); // 跳过重复的元素 for (int j = i + 1; j < nums.size(); ++j) { if (nums[j] != nums[i]) { break; } ++i; } } } };
相关文章推荐
- js事件
- uva 10245 The Closest Pair Problem
- codeforces #305 C Mike and Foam
- Kylin cuboid算法修改
- python文件取MD5
- linux tail命令的使用方法详解
- 矩阵快速幂
- python 中 print 函数用法总结
- angularjs post /get请求及radio button
- JSON in google Maps
- 队列卡片题
- 一、ThinkPHP的介绍
- serverlet
- 一、ThinkPHP的介绍
- 一、ThinkPHP的介绍
- static 和 final 总结
- POJ3259Wormholes
- 二叉树的遍历
- Spring总结0402
- ECMAScript 6学习笔记