不知道为什么会这样输出,都输出了两次
Input
Show Difference
[1,2,3]
Output
[[],[],[1],[1],[1,2],[1,2],[1,2,3],[1,2,3],[1,3],[1,3],[2],[2],[2,3],[2,3],[3],[3]]
Expected
[[],[1],[1,2],[1,2,3],[1,3],[2],[2,3],[3]]
class Solution {
public:
vector<vector<int>> subsets(vector<int> &nums){
// write your code here
vector<vector<int>> vv;
vector<int> tmp;
helper(vv,0,nums,tmp, true);
helper(vv,0,nums,tmp, false);
return vv;
}
void helper(vector<vector<int>> &vv,int i,vector<int> &nums,vector<int> tmp, bool check){
if(i==nums.size()){
vv.push_back(tmp);
return;
}
if (check){
tmp.push_back(nums[i]);
}
helper(vv,i+1,nums,tmp, true);
helper(vv,i+1,nums,tmp, false);
}
};
下面的是对的
class Solution {
public:
vector<vector<int>> subsets(vector<int> &nums){
// write your code here
vector<vector<int>> vv;
vector<int> tmp;
helper(vv,0,nums,tmp);
return vv;
}
void helper(vector<vector<int>> &vv,int i,vector<int> &nums,vector<int> tmp){
if(i==nums.size()){
sort(tmp.begin(),tmp.end());
vv.push_back(tmp);
return;
}
tmp.push_back(nums[i]);
helper(vv,i+1,nums,tmp);
tmp.pop_back();
helper(vv,i+1,nums,tmp);
}
};