想用递归。。。结果感觉有点麻烦。。。

 

那要么就用stl的next_permutation吧,,,不过这样好没意思。。。

还是自己实现吧。。。

 

class Solution {
public:
    bool next_per(vector<int>& num) {
        int size = num.size();
        if(size <= 1) return false;
        int idx = size - 1;
        while(idx > 0 && num[idx] <= num[idx-1]) {
            idx --;
        }
        if(idx > 0) {
            idx --;
            int maxr = size - 1;
            while(num[maxr] <= num[idx]) maxr--;
            swap(num[idx] ,num[maxr] );
            reverse(num.begin() + idx + 1 , num.end());
        } else {
            return false;
        }
        return true;
    }
    vector<vector<int> > permuteUnique(vector<int> &num) {
        sort(num.begin() , num.end());
        vector<vector<int> >ans;
        ans.push_back(num);
        while(next_per(num)) {
            ans.push_back(num);
        }
        return ans;       
    }
};

 

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-10-13
  • 2021-05-29
  • 2022-02-26
猜你喜欢
  • 2021-12-24
  • 2021-07-25
  • 2021-05-19
  • 2022-03-06
  • 2021-06-27
相关资源
相似解决方案