思路:排列问题,深度搜索+交换。
代码:
public class Permutations46 {
public static void main(String[] args) {
int[] num= {1,2,3};
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]);
}
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;
}
}
输出: