给定一个 没有重复 数字的序列,返回其所有可能的全排列。
示例:
输入: [1,2,3]
输出:
[
[1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2],
[3,2,1]
]
class Solution {public List<List<Integer>> permute(int[] nums) {List<List<Integer>> result = new ArrayList<>();List<Integer> temp = new ArrayList<>();backTrack(nums, temp, result);return result;}/*** 回溯法模板* @param nums* @param temp* @param result*/private static void backTrack(int[] nums, List<Integer> temp, List<List<Integer>> result) {//// 判断是否找到正确路径,找到就加入到结果中if (temp.size() == nums.length) {result.add(new ArrayList<>(temp));return;}for (int i = 0; i < nums.length; i++) {//// 判断是否有重复if (temp.contains(nums[i])) {continue;}//// 添加步数temp.add(nums[i]);//// 继续找路backTrack(nums, temp, result);//// 找下条同级别路径前先退回上一步temp.remove(temp.size()-1);}}
}