[LeetCode 题解]: Permutations II
2014-06-17 18:14
453 查看
Given a collection of numbers that might contain duplicates, return all possible unique permutations.
For example,
题解:依旧使用的是DFS的思想。
首先需要遍历输入数组,获取一共有多少种不同的数字,每个数字有多少个。 最简单的方法,排序后统计。
然后就是对应位置填数字的游戏了,DFS即可。
转载请注明出处: http://www.cnblogs.com/double-win/ 谢谢!
For example,
[1,1,2]have the following unique permutations:
[1,1,2],
[1,2,1], and
[2,1,1].
题解:依旧使用的是DFS的思想。
首先需要遍历输入数组,获取一共有多少种不同的数字,每个数字有多少个。 最简单的方法,排序后统计。
然后就是对应位置填数字的游戏了,DFS即可。
class Solution { public: vector<vector<int> > vi; vector<int> types; // 数字缓存数组 vector<int> counts; // 数字计数器数组 vector<int> seq; // 打印数组 void generatePermute(int len) { if(len==0) { vi.push_back(seq); return; } for(int i=0;i<types.size();i++) { if((counts[i])>0) { counts[i]--; seq[len-1]=types[i]; //第len-1 是否存放types[i] generatePermute(len-1); counts[i]++; } } } vector< vector<int> > permuteUnique(vector<int> &num) { if(num.size()==0) return vi; sort(num.begin(),num.end()); vi.clear(); //结果数组初始化 types.clear(); //数字缓存数组初始化 counts.clear(); //计数器初始化 seq.resize(num.size()); //输出数组大小设定 int j=0; types.push_back(num[0]); counts.push_back(1); for(int i=1;i<num.size();i++) { if(num[i]==types.back()) { counts.back()++; } else { types.push_back(num[i]); counts.push_back(1); } } generatePermute(num.size()); return vi; } };
转载请注明出处: http://www.cnblogs.com/double-win/ 谢谢!
相关文章推荐
- [LeetCode]题解(python):047-Permutations II
- [LeetCode]047-Permutations II
- LeetCode题解:Battleships in a Board
- leetcode226题 题解 翻译 C语言版 Python版
- [81][E][leetcode 题解]Minimum Depth of Binary Tree
- leetcode 344. Reverse String 题解
- leetcode47. Permutations II
- Leetcode题解-55. Jump Game
- Leetcode题解(九)
- 【题解】【数组】【Leetcode】Merge Sorted Array
- [LeetCode]题解(python):149-Max Points on a Line
- [LeetCode]题解(python):153-Find Minimum in Rotated Sorted Array
- LeetCode题解——Permutation总结
- LeetCode题解:Longest Substring Without Repeating Characters
- LeetCode 203. Remove Linked List Elements 题解 —— Java
- LeetCode题解--10. Regular Expression Matching
- leetcode题解-54. Spiral Matrix && 59. Spiral Matrix II
- Leetcode题解(十一)
- LeetCodet题解--13. Roman to Integer
- LeetCode 200. Number of Islands 题解