全排列
给定一个没有重复数字的序列,返回其所有可能的全排列。
示例:
输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]
]
思路:还是排列组合问题,用回溯法,但注意的是,遇到重复的要跳过
代码如下:
package 中级回溯; import java.util.ArrayList; import java.util.List; public class 全排序 { public List<List<Integer>> permute(int[] nums) { List<List<Integer>> list = new ArrayList<>(); List<Integer> aIntegers = new ArrayList<>(); chuli(aIntegers, 0 , nums,list); return list; } private static void chuli(List<Integer> aIntegers, int n , int[] nums, List<List<Integer>> list) { if (n == nums.length) { list.add(new ArrayList<Integer>(aIntegers)); return; } for (int i = 0; i < nums.length; i++) { if (aIntegers.contains(nums[i])) { continue; } aIntegers.add(nums[i]); chuli(aIntegers, n+1, nums, list); aIntegers.remove(aIntegers.size()-1); } } }