您的位置:首页 > 其它

[LeetCode] 47. Permutations II

2016-07-21 21:04 501 查看
思路:

和上一题一模一样的代码http://blog.csdn.net/hiimdaosui/article/details/51986580

bool nextPermutation(vector<int>& nums) {
int i, j;
for (i = nums.size() - 2; i >= 0; i--)
if (nums[i] < nums[i + 1])
break;

if (i < 0) return false;

for (j = nums.size() - 1; j > i; j--)
if (nums[j] > nums[i])
break;

swap(nums[i], nums[j]);

reverse(nums.begin() + i + 1, nums.end());
return true;
}

vector<vector<int>> permuteUnique(vector<int>& nums) {
vector<vector<int>> res;
// 要记得排序!!!
sort(nums.begin(), nums.end());
res.push_back(nums);
if (nums.empty() || nums.size() == 1)
return res;
while (nextPermutation(nums))
res.push_back(nums);
return res;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: