leetcode-90-子集II

class Solution {

public:

    vector<vector<int>> res;

    int flag = 0;

    void helper(vector<int> nums, int begin, vector<int> curres){

        if (flag) res.push_back(curres);

        else{

            for (int i=begin; i<=nums.size(); ){

                if (i == nums.size()){

                    flag++;

                    helper(nums, i+1, curres);

                    flag--;

                    i++;

                    continue;

                }

                int nxti = i+1;

                while(nxti < nums.size() && nums[nxti-1] == nums[nxti]) nxti++;

                curres.push_back(nums[i]);

                helper(nums, i+1, curres);

                curres.pop_back();

                i = nxti;

            }

        }

        return;

    }

    vector<vector<int>> subsetsWithDup(vector<int>& nums) {

        sort(nums.begin(), nums.end());

        helper(nums, 0, vector<int>());

        return res;

    }

};

相关文章:

  • 2021-07-14
  • 2021-10-10
  • 2021-07-19
  • 2021-11-27
  • 2022-03-07
  • 2021-05-28
  • 2021-11-22
猜你喜欢
  • 2022-12-23
  • 2021-09-13
  • 2021-05-19
  • 2021-05-25
  • 2021-11-02
  • 2022-12-23
相关资源
相似解决方案