全排列

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

示例:

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

你可能感兴趣的:(全排列)