给定一个集合,含有重复元素,求这个集合的子集,例如:集合{1,2,2},子集为{},{1},{2},{1,2},{2,2},{1,2,2}。 解法一:递归解法二:循环void subsetsWithDup(vector<vector<int>> &res, vector<int> &path,vector<int> &nums, int start) { res.push_back(path); for (int i = start; i < nums.size(); ++i) { if (i == start || nums[i] != nums[i - 1]) { path.push_back(nums[i]); subsetsWithDup(res, path, nums, i + 1); path.pop_back(); } } } vector<vector<int>> subsetsWithDup(vector<int>& nums) { vector<vector<int>> res; vector<int> path; sort(nums.begin(),nums.end()); subsetsWithDup(res, path, nums, 0); return res; }
vector<vector<int>> subsetsWithDup(vector<int>& nums) { vector<vector<int>> res = { {} }; sort(nums
集合中的子集2(含有重复元素)
最新推荐文章于 2020-03-13 16:43:25 发布