[LeetCode] Permutations II
2014-03-20 11:00
218 查看
Given a collection of numbers that might contain duplicates, return all possible unique permutations.
For example,
Solution:
由于数据中有重复,在递归时需要判断是否可以交换。基本的枚举思路是每个数分别出现在第k位,然后排列剩下的元素。这里第k位的元素在枚举过程中需要判断是否已经出现过。
For example,
[1,1,2]have the following unique permutations:
[1,1,2],
[1,2,1], and
[2,1,1].
Solution:
由于数据中有重复,在递归时需要判断是否可以交换。基本的枚举思路是每个数分别出现在第k位,然后排列剩下的元素。这里第k位的元素在枚举过程中需要判断是否已经出现过。
class Solution { public: vector<vector<int> > ans; vector<int> src; int srcLen; void perm(int i) { if(i == srcLen - 1) { vector<int> tmp; for(int i = 0;i < srcLen;i++) tmp.push_back(src[i]); ans.push_back(tmp); } else { set<int> dic; for(int k = i;k < srcLen;k++) { if(dic.find(src[k]) == dic.end()) { int t = src[i]; src[i] = src[k]; src[k] = t; perm(i + 1); src[k] = src[i]; src[i] = t; dic.insert(src[k]); } } } } vector<vector<int> > permuteUnique(vector<int> &num) { src = num; srcLen = num.size(); perm(0); return ans; } };
相关文章推荐
- leetcode 47:Permutations II
- LeetCode *** 47. Permutations II (Backtracking )
- LeetCode: Permutations II
- 【Leetcode】Permutations II (Backtracking)
- LeetCode-Permutations II
- LeetCode - Permutations II
- leetcode 47. Permutations II
- [LeetCode] Permutations II
- 个人记录-LeetCode 47. Permutations II
- leetcode 47. Permutations II 全排列问题(去掉重复元素)+递归
- LeetCode:Permutations, Permutations II(求全排列)
- leetcode-Permutations II(2014.2.4)
- LeetCode-----46.Permutations&&47.Permutations II (全排列----回溯法)
- leetCode 47.Permutations II (排列组合II) 解题思路和方法
- [LeetCode] 073: Permutations II
- LeetCode - Permutations II
- Leetcode---Permutations II
- LeetCode - Permutations II
- leetcode 47. Permutations II
- [LeetCode]Permutations II