全排列

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

示例:

输入: [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>> res = new ArrayList<List<Integer>>();
     List<Integer> output = new ArrayList<Integer>();
     for (int num : nums) {
       output.add(num);
     }
     int n = nums.length;
     backtrack(n, output, res, 0);
     return res;
   }
   public void backtrack(int n, List<Integer> output, List<List<Integer>> res, int first) {
     if (first == n) {
       res.add(new ArrayList<Integer>(output));
     }
     for (int i = first; i < n; i++) {
       Collections.swap(output, first, i);
       backtrack(n, output, res, first + 1);
       Collections.swap(output, first, i);
    }
   }
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 自己解法 这题解法和全排列类似,只用对同层相同的分支进行剪枝,有点忘了在哪剪了,还是放在后面剪比较好理解,回溯完以...
    justonemoretry阅读 222评论 0 0
  • 自己解法 这个题的思路比较简单,就是经典的回溯法,但是写起来并没有那么的得心应手,主要是对于还可以使用的元素的处理...
    justonemoretry阅读 214评论 0 0
  • 题目描述:给定一个可包含重复数字的序列,返回所有不重复的全排列。 示例:输入: [1,1,2] 输出: [ [1...
    windUtterance阅读 325评论 0 0
  • 问题:输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则输出由字符a,b,c所能排列出来的所...
    方法一君阅读 586评论 0 0
  • 题目 给定一个可包含重复数字的序列,返回所有不重复的全排列。 示例: 输入: [1,1,2] 输出: [ [1,...
    zuki_75b3阅读 237评论 0 0