【回溯法】Permutations II
来源:互联网 发布:mac 看不到文件夹 编辑:程序博客网 时间:2024/05/16 04:58
题目:leetcode
Permutations II
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]
.
分析:
1、记录输入数组中每个元素出现的次数,将该记录(pait<int,int>类型)放在数组n里。
2、每次递归,从n的第一个元素开始遍历:若该元素代表的数字在path中出现的次数少于上限,则可以往path里加入一个该数字;若该元素代表的数字在path中出现的次数等于上限,则该数字不能再放入path了,此时查看数组n的下一个元素。
class Solution {public: vector<vector<int> > permuteUnique(vector<int> &num) { vector<vector<int> > res; if(num.empty()) return res; map<int,int> t; for(auto &i:num) { t[i]++; } vector<pair<int,int>> n; for(auto &i:t) { n.push_back(i); } int size=num.size(); vector<int> path(size); permuteUnique_core(n,0,path,res); return res; }void permuteUnique_core(vector<pair<int,int>> &n,int index,vector<int> &path,vector<vector<int> > &res){ if(index==path.size()) { res.push_back(path); return; } for(int i=0;i<n.size();i++) { int count=0; for(int j=0;j<index;j++) { if(path[j]==n[i].first) count++; } if(count<n[i].second) { path[index]=n[i].first; permuteUnique_core(n,index+1,path,res); } }}};
0 0
- 【回溯法】Permutations II
- LeetCode-----46.Permutations&&47.Permutations II (全排列----回溯法)
- 46. Permutations(回溯法)
- [LeetCode]Permutations II(!!!!!DFS递归&&回溯)
- leetcode 47. Permutations II-排列|回溯算法
- Permutations—回溯法求解
- (回溯法)LeetCode#46. Permutations
- 【LeetCode】Permutations && Permutations II
- leetcode: Permutations/Permutations II
- leetcode Permutations & Permutations II
- [Leetcode]Permutations && Permutations II
- Permutations and Permutations II
- Permutations && Permutations ii
- Permutations II
- Permutations II
- Permutations II
- Permutations II
- Permutations II
- jQuery实现小功能之鼠标悬浮时上下翻滚文字
- 屡败屡战,还是输了。求大神指教哪里错了,奇偶分离 c语言
- 关于3Ds MAX在freeze transform后无法使用飘带插件springmagic的解决过程
- 【Java】对文件或文件夹进行重命名
- 第六周 项目6-复数模板类(2)
- 【回溯法】Permutations II
- java异常处理
- 码率、帧率和I B P帧
- 欢迎使用CSDN-markdown编辑器
- C重点知识点总结(1)
- 22条创业军规,让你5分钟读完《创业维艰》
- 第四题
- 黑马程序员——Objective-C——语法概述
- 打印tree - javascript