您的位置:首页 > 其它

47. Permutations II

2016-05-26 21:36 309 查看
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());
do{
ret.push_back(nums);
}while(next_permutation(nums.begin(),nums.end()));
return ret;
}
};


class Solution {
private:
bool next(vector<int>&nums)
{
if(nums.size()==1)
return false;

int i=nums.size()-2;
int ii=nums.size()-1;
while(i>=0&&nums[i]>=nums[ii])
{
i--;
ii--;
}
if(i==-1)
{
reverse(nums.begin(),nums.end());
return false;
}
int k=nums.size()-1;
while(k>=0&&nums[k]<=nums[i])
{
k--;
}
swap(nums[i],nums[k]);
reverse(nums.begin()+ii,nums.end());
return true;
}
public:
vector<vector<int>> permuteUnique(vector<int>& nums) {
vector<vector<int>> ret;
if(nums.size()==0)
return ret;
if(nums.size()==1)
{
ret.push_back(nums);
return ret;
}
sort(nums.begin(),nums.end());
do{
ret.push_back(nums);
}while(next(nums));
return ret;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: