全排列(含有重复元素)
题目: 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]
.
思路:
比较直观的想法就是递归,在num中拿出1个数字放在第一个,然后剩下的数字做一个全排列。当含有重复元素时,注意防止第一个固定的元素
【全排列(含有重复元素)】重复,当重复时,无需再排列,所以需要判断。
其他方法参考:http://blog.csdn.net/tuantuanls/article/details/8717262
代码:
vector
vector
int n=nums.size();
if(n==1){
result.push_back(nums);
return result;
}
else{
vector
for(int i=0;
i
if(find(visited.begin(),visited.end(),nums[i])==visited.end()){
visited.push_back(nums[i]);
vector
vector
cur.erase(cur.begin()+i);
vector
for(int j=0;
j
result.push_back(temp[j]);
}
}
}
return result;
}
}
推荐阅读
- 危险也是机会
- 活着就是生命的全部意义
- 一个健康的APP和健全的人格大体类似
- NeuVector 会是下一个爆款云原生安全神器吗()
- 全过程工程咨询——时间管理(12)
- 别墅庭院设计,不同的别墅庭院设计也给人视觉上完全不一样的!
- 不让记忆、感觉、情绪成为孩子的负累|不让记忆、感觉、情绪成为孩子的负累|《全脑教养法》(四)
- (全员向连载)云间当铺(一)
- 「按键精灵安卓版」关于全分辨率脚本的一些理解(非游戏app)
- 全职妈妈在4岁孩子眼中只是一个loser