题目描述:给定一个数组,请输出其全部排列顺序,如[1,2,3],请输出[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]
解题思路:递归思想,固定数组第一位,其余部分看作递归整体
class Solution{
List<int[]> reslist = new ArrayList<>();
public List<int[]> printAll(int[] nums){
findAllSort(nums, 0);
return reslist;
}
public void findAllSort(int[] nums, int begin){
int n = nums.length;
//全部找完之后再添加
if(begin == n) {
for(int num : nums) {
System.out.print(num);
}
System.out.println();
reslist.add(nums);
}
//原地对调
for(int i = begin; i < n; i++) {
swap(nums, i, begin);
findAllSort(nums, begin + 1);
swap(nums, begin, i);
}
}
public void swap(int[] nums, int i, int j) {
int temp;
temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
}