LeetCode 47. Permutations II

https://leetcode.com/problems/permutations-ii/

这道题惊讶了一下,竟然超过了百分之94的cpp提交

思路很简单next_permutation就行了。


class Solution {
public:
    vector< vector<int> > permuteUnique(vector<int>& nums) {
        vector < vector<int> > ret;
        if(nums.size() == 0) return ret;
        sort(nums.begin(), nums.end());
        ret.push_back(nums);
        int flag ;
        do {
            flag = 0;
            int left = 0,right = nums.size()-1;
            for(int i=nums.size()-2;i>=0;i--) {
                if(nums[i] < nums[i+1]) {
                    left = i;
                    flag = 1;
                    break;
                }
            }
            if(flag) {
                for(int i= nums.size()-1;i>=0;i--) {
                    if(nums[i] > nums[left]) {
                        right = i;
                        swap(nums[left], nums[right]);
                        flag ++;
                        break;
                    }
                }
                if(flag == 2) {
                    reverse(nums.begin()+left+1, nums.end());
                    ret.push_back(nums);
                }
            }
        } while(flag==2);

        return ret;
    }
};



你可能感兴趣的:(LeetCode 47. Permutations II)