lintcode-带重复元素的排列 -16

来源:互联网 发布:华中炒股软件 编辑:程序博客网 时间:2024/04/29 22:35

给出一个具有重复数字的列表,找出列表所有不同的排列


样例

给出列表[1,2,2],不同的排列有:

[

    [1,2,2],

    [2,1,2],

    [2,2,1]

]

class Solution {public:       bool nextPermutation(vector<int> &nums) {                   int n = nums.size();          for(int i=n-1;i>=0;i--){              for(int j=n-1;j>i;j--){                  if(nums[i]<nums[j]){                      swap(nums[i],nums[j]);                      sort(nums.begin()+i+1,nums.end());                      return true;                  }              }          }          sort(nums.begin(),nums.end());        return false;    }      vector<vector<int> > permuteUnique(vector<int> &nums) {              vector<vector<int> > ret;        sort(nums.begin(),nums.end());                do{            ret.push_back(nums);        }while(nextPermutation(nums));            return ret;    }};


0 0
原创粉丝点击