16.带重复元素的排列
描述
给出一个具有重复数字的列表,找出列表所有不同的排列。
您在真实的面试中是否遇到过这个题?
是 样例
给出列表 [1,2,2]
,不同的排列有:
[
[1,2,2],
[2,1,2],
[2,2,1]
]
挑战
【16.带重复元素的排列】使用递归和非递归分别完成该题。
递归方法:
参照16题,为排除重复元素,要保证需要进行交换的两数之间没有重复的数。
class Solution {
public:
/*
* @param nums: A list of integers.
* @return: A list of permutations.
*/
vector> m_vectors;
vector> permuteUnique(vector &nums) {
// write your code here
if(nums.size()>0){
perm(nums,0,nums.size()-1);
}else{
vector n_vector;
m_vectors.push_back(n_vector);
}
return m_vectors;
}void perm(vector &nums,int p,int q){
if(p==q){
m_vectors.push_back(nums);
}else{
for(int i=p;
i<=q;
i++){
if(isswap(nums,p,i)){
swap(nums[p],nums[i]);
perm(nums,p+1,q);
swap(nums[p],nums[i]);
}
}
}
}
bool isswap(vector &nums,int start,int end){
for(int i=start;
i
推荐阅读
- 基于微信小程序带后端ssm接口小区物业管理平台设计
- 精神,带我走向人生的天堂!
- 带有Hilt的Android上的依赖注入
- python自定义封装带颜色的logging模块
- 皮夹克
- 油菜花田的小路像绶带
- 不废话,代码实践带你掌握|不废话,代码实践带你掌握 强缓存、协商缓存!
- 《离开却带走了“能量的魔杖”(52)》能量爱情公寓
- 《生不带来死不带去》
- 爸爸带我买文具。