心得:这个题多了一个重复的,在选择的时候要注意重复条件
,不知道怎么去重就用set。
1 class Solution { 2 3 public List<List<Integer>> permuteUnique(int[] nums) { 4 List<List<Integer>> list=new ArrayList<>(); 5 if(nums==null||nums.length==0) 6 return list; 7 int[] visited=new int[nums.length]; 8 Arrays.sort(nums); 9 ans(nums,visited,0,new ArrayList(),list); 10 return list; 11 } 12 public void ans(int[] nums,int[] visited,int index,List<Integer> tmp, List<List<Integer>> list) 13 { 14 if(index==nums.length) 15 { 16 list.add(new ArrayList(tmp)); 17 } 18 for(int i=0;i<nums.length;i++) 19 { 20 if(i>0&&nums[i]==nums[i-1]&&visited[i-1]==0)//去重的重点!!!!! 21 continue; 22 if(visited[i]==1) 23 continue; 24 visited[i]=1; 25 tmp.add(nums[i]); 26 ans(nums,visited,index+1,tmp,list); 27 tmp.remove(tmp.size()-1); 28 visited[i]=0; 29 } 30 } 31 }
原文地址:https://www.cnblogs.com/pc-m/p/11039895.html
时间: 2024-11-08 20:00:03