LeetCode:46 全排列
描述
给定一个
没有重复数字的序列,返回其所有可能的全排列。
示例:
输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ]
给定一个没有重复数字的序列,返回其所有可能的全排列。
示例:
输入: [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>> lists = new ArrayList<>();
List<Integer> list = new ArrayList<Integer>();
List<Integer> listNums = new ArrayList<Integer>();
int length = nums.length;
for(int num:nums)
listNums.add(num);
backsource(length,listNums,0,lists);
return lists;
}
public void backsource(int n,List<Integer> num,int startIndex,List<List<Integer>> lists){
if(startIndex == n){
lists.add(new ArrayList<Integer>(num));
return;
}
for(int i = startIndex ;i < n;i++){
Collections.swap(num, startIndex, i);
backsource(n,num,startIndex+1,lists);
Collections.swap(num, startIndex, i);
}
}
}