[LeetCode]047-Permutations II
2016-05-07 14:54
323 查看
题目:
Given a collection of numbers that might contain duplicates, return all possible unique permutations.
For example,
[1,1,2] have the following unique permutations:
[1,1,2], [1,2,1], and [2,1,1].
Solution:
直接运用nextPermutation的思想。nextPermutation,按照字典序排序的,字符串的下一个字典序全排列。
Given a collection of numbers that might contain duplicates, return all possible unique permutations.
For example,
[1,1,2] have the following unique permutations:
[1,1,2], [1,2,1], and [2,1,1].
Solution:
直接运用nextPermutation的思想。nextPermutation,按照字典序排序的,字符串的下一个字典序全排列。
class Solution { public: void nextPermutation(vector<int>& nums) { int N = nums.size(); int i = N - 1; while(i > 0 && (nums[i-1] >= nums[i])) i--; int j = i; while( j < N && i != 0 && nums[j] >nums[i-1]) j++; if(i == 0) reverse(nums.begin(),nums.end()); else { swap(nums[i-1],nums[j-1]); reverse(nums.begin()+i,nums.end()); } } vector<vector<int>> permuteUnique(vector<int>& nums) { vector<vector<int>> ret; vector<int> temp = nums; ret.push_back(temp); nextPermutation(temp); while(temp != nums) { ret.push_back(temp); nextPermutation(temp); } return ret; } };
相关文章推荐
- leetcode 179 Largest Number
- leetcode 24 Swap Nodes in Pairs
- leetcode 2 Add Two Numbers 方法1
- leetcode 2 Add Two Numbers 方法2
- leetcode----Longest Substring Without Repeating Characters
- [LeetCode]47 Permutations II
- [LeetCode]65 Valid Number
- [LeetCode]123 Best Time to Buy and Sell Stock III
- [LeetCode] String Reorder Distance Apart
- [LeetCode] Sliding Window Maximum
- [LeetCode] Find the k-th Smallest Element in the Union of Two Sorted Arrays
- [LeetCode] Determine If Two Rectangles Overlap
- [LeetCode] A Distance Maximizing Problem
- leetcode_linearList
- leetcode_linearList02
- 021-Merge Two Sorted Lists(合并两个排好序的单链表);leetcode
- LeetCode[Day 1] Two Sum 题解
- LeetCode[Day 2] Median of Two Sorted Arrays 题解
- LeetCode[Day 3] Longest Substring Without... 题解
- LeetCode [Day 4] Add Two Numbers 题解