1. 程式人生 > >47. Permutations II

47. Permutations II

題目:

解答:

題46的解法在這裡依然適用,不需要做修改

程式碼:

class Solution {
public:
    vector<vector<int>> permuteUnique(vector<int>& nums) {
        int len = nums.size();
        vector<vector<int>> result;
        if(len == 0)    return result;
        if(len == 1){
            result.push_back
(nums); return result; } sort(nums.begin(), nums.end()); result.push_back(nums); // 1 3 4 2 // 1 4 3 2 // 3 4 2 1 while(true){ /* for(int i = 0;i < len; ++i) cout << nums[i] << " "; cout << endl; */
int i = len - 1; for(i = len - 1;i > 0; --i){ if(nums[i] > nums[i-1]){ for(int j = len - 1;j >= i; --j){ if(nums[j] > nums[i-1]){ swap(nums[j], nums[i-1]); for
(int k = i;k <= (i + len - 1) / 2; ++k) swap(nums[k], nums[i+len-1-k]); result.push_back(nums); break; } } break; } } if(i == 0) break; } return result; } };