[LeetCode] Permutations II
2014-11-01 18:07
405 查看
Given a collection of numbers that might contain duplicates, return all possible unique permutations.
For example,
and
注意noswap的书写,从cur往后扫描,只要有一个数字跟第i个数字一样,就不交换。
For example,
[1,1,2]have the following unique permutations:
[1,1,2],
[1,2,1],
and
[2,1,1].
class Solution { public: vector<vector<int> > permuteUnique(vector<int> &num) { vector<vector<int>> res; sort(num.begin(), num.end()); dfs(res, num, 0); return res; } void dfs(vector<vector<int>> &permu, vector<int> &num, int cur) { if(cur == num.size()) permu.push_back(num); else { for(int i = cur; i < num.size(); i++) { if(noswap(num, i, cur)) continue; swap(num[i], num[cur]); dfs(permu, num, cur+1); swap(num[i], num[cur]); } } } bool noswap(vector<int> &num, int i, int cur) { for(int j = cur; j < i; j++) if(num[i] == num[j]) return true; return false; } };
注意noswap的书写,从cur往后扫描,只要有一个数字跟第i个数字一样,就不交换。
相关文章推荐
- [leetcode] Permutations II
- [LeetCode][Java] Permutations II
- [Leetcode] Permutations II
- [LeetCode] Permutations II
- LeetCode - Permutations II
- LeetCode 47. Permutations II(生成不同的组合-dfs)
- [Leetcode 101] 47 Permutations II
- Leetcode:Permutations与Permutations II
- 【leetcode刷题笔记】Permutations II
- leetcode 47:Permutations II
- LeetCode::Permutations II
- LeetCode *** 47. Permutations II (Backtracking )
- [leetCode刷题笔记]47. Permutations II
- LeetCode (Permutations II)
- leetcode 46-Permutations and 47-Permutations II
- LeetCode - Permutations II
- [leetcode]Permutations II
- leetcode- Permutations II
- LeetCode刷题笔录Permutations II
- leetcode - Permutations II