题目:
我认为这道题和上一道题基本没什么差别,唯一的差别应该就是不能有重复的组合
对 全排列| 的代码做了一点点修改
代码:
class Solution {
//定义一个结果列表
private List<List<Integer>> res=new ArrayList<List<Integer>>();
public List<List<Integer>> permute(int[] nums) {
List<Integer> list=new ArrayList<Integer>();
List<Integer> num = new ArrayList ();
for(int i:nums)
num.add(i);
helpToPermute(num,list);
//转换成set类型去重,再转换回list
res=new ArrayList(new HashSet(res));
return res;
}
//用于递归
public void helpToPermute(List<Integer> nums,List<Integer> list){
if(nums.size()==0){
res.add(new ArrayList<Integer>(list));
}
int temp;
for(int i=0;i<nums.size();i++){
temp=nums.get(i);
list.add(nums.get(i));
nums.remove(i);
helpToPermute(nums,list);
nums.add(i,temp);
list.remove(list.size()-1);
}
}
}