01全排列

全排列

给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。

示例 1:

输入:nums = [1,2,3]
输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]

示例 2:

输入:nums = [0,1]
输出:[[0,1],[1,0]]

示例 3:

输入:nums = [1]
输出:[[1]]

提示:

  • 1 <= nums.length <= 6
  • -10 <= nums[i] <= 10
  • nums 中的所有整数 互不相同
public List<List<Integer>> permute(int[] nums) {
  List<List<Integer>> res = new ArrayList<>();
  dfs(nums,0,res);
  return res;
}

private void dfs(int[] nums, int index, List<List<Integer>> res){
  if(nums.length-1 == index){
    res.add(Arrays.stream(nums).boxed().toList());
  }
  for (int i = index ; i < nums.length ; i++) {
    swap(nums,index,i);
    dfs(nums,index+1,res);
    swap(nums,i,index);
  }
}


private void swap(int[] nums, int index1,int index2){
  if(index1 == index2){
    return;
  }
  int temp = nums[index1];
  nums[index1] = nums[index2];
  nums[index2] = temp;
}

01全排列
https://jiajun.xyz/2026/02/12/算法/10回溯/01全排列/
作者
Lambda
发布于
2026年2月12日
许可协议