# 全排列

给定一个 没有重复 数字的序列,返回其所有可能的全排列。

示例:

输入: [1,2,3]
输出:
[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]
## template ```java class Solution { public List> permute(int[] nums) { List> result = new ArrayList>(); Arrays.sort(nums); List first = new ArrayList(); for (int r = 0; r < nums.length; r++) { first.add(nums[r]); } result.add(first); int i = nums.length - 2; while (i >= 0) { if (nums[i] < nums[i + 1]) { int temp = nums[i]; for (int j = nums.length - 1; j > i; j--) { if (nums[j] > temp) { nums[i] = nums[j]; nums[j] = temp; break; } } nums = quick_sort(nums, i + 1, nums.length - 1); List sub = new ArrayList(); for (int t = 0; t < nums.length; t++) { sub.add(nums[t]); } result.add(sub); i = nums.length - 2; } else { i--; } } return result; } public int[] quick_sort(int[] a, int left, int right) { if (left < right) { int l = left; int r = right; int temp = a[l]; while (l != r) { while (l < r && a[r] > temp) { r--; } if (l < r) { a[l] = a[r]; l++; } while (l < r && a[l] < temp) { l++; } if (l < r) { a[r] = a[l]; r--; } } a[l] = temp; quick_sort(a, left, l - 1); quick_sort(a, l + 1, right); } return a; } } ``` ## 答案 ```java ``` ## 选项 ### A ```java ``` ### B ```java ``` ### C ```java ```