本文主要是介绍leetcode 90:子集 II,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
因为已经做过leetcode78 做这个相对较容易 首先对数组进行排序 之后再进行操作
void push(std::vector<std::vector<int>> &a,std::vector<int> &v,std::vector<int> &nums,int n,int s){if(v.size()==n){for(int i=0;i<a.size();i++){if(a[i]==v)return;}a.push_back(v);return;}for(int i=s;i<nums.size();i++){v.push_back(nums[i]);push(a,v,nums,n,i+1);v.pop_back();}
}std::vector<std::vector<int>> subsetsWithDup(std::vector<int>& nums) {int n=0;std::vector<int> v;std::vector<std::vector<int>> a;std::vector<int> flag;std::sort(nums.begin(),nums.end());for(int i=0;i< nums.size();i++){flag.push_back(0);}while(n!=nums.size()+1){v.clear();if(n==0)a.push_back(v);else{push(a,v,nums,n,0);}n++;}return a;
}
这篇关于leetcode 90:子集 II的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!