leetcode47:Permutations II
阿新 • • 發佈:2018-12-11
思路:依然採用dfs+交換,多了去重步驟。
程式碼:
public class PermutationsII { public static void main(String[] args) { int[] num= {1,1,2}; System.out.println(permute(num)); } public static List<List<Integer>> permute(int[] nums) { List<List<Integer>> ls =new ArrayList<>(); helpPermute(nums,0,ls); return ls; } private static void helpPermute(int[] nums, int index, List<List<Integer>> ls) { if(index>=nums.length) { List<Integer> list = new ArrayList<>(); for (int i = 0; i < nums.length; i++) { list.add(nums[i]); } if(!ls.contains(list)) ls.add(new ArrayList(list)); return; } for (int i = index; i < nums.length; i++) { swap(nums,i,index); helpPermute(nums, index+1,ls); swap(nums,i,index); } } private static void swap(int[] nums, int i, int j) { int tmp = nums[i]; nums[i]=nums[j]; nums[j]=tmp; } }
輸出: