题解 | #集合的所有子集(二)#

集合的所有子集(二)

http://www.nowcoder.com/practice/a3dfd4bc8ae74fad9bc65d5ced7ae813

递归+回溯

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums int整型vector 
     * @return int整型vector<vector<>>
     */
    void solve(vector<int>& nums,vector<int> tmp,int t,vector<vector<int> >& res){
        /*if(t==nums.size()){
            return;
        }*/
        res.push_back(tmp);
        int former=-1;
        for(int i=t;i<nums.size();++i){
            if(nums[i]!=former){
                tmp.push_back(nums[i]);
                solve(nums, tmp, i+1,res);
                tmp.pop_back();
            }
            former=nums[i];
        }
        return;

    }
    vector<vector<int> > subsets(vector<int>& nums) {
        // write code here
        vector<vector<int> > res;
        vector<int> tmp;
        sort(nums.begin(),nums.end());
        solve(nums,tmp,0,res);
        return res;
    }
};

alt

全部评论

相关推荐

不愿透露姓名的神秘牛友
11-27 10:52
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务