leetcode46:全排列
全排列
给定一个不含重复数字的数组 nums
,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。
List<List<Integer>> list = new ArrayList<>();
public List<List<Integer>> permute(int[] nums) {
LinkedList<Integer> res = new LinkedList<>();
for (int i = 0; i < nums.length; i++) {
res.add(nums[i]);
}
backTrack(nums,0,res);
return list;
}
void backTrack(int nums[], int start, LinkedList<Integer> res){
if(start == nums.length){
list.add(new ArrayList<>(res));
return;
}
for (int i = start; i < nums.length; i++) {
swap(res,start,i);
backTrack(nums,start+1,res);
swap(res,start,i);
}
}
private void swap(LinkedList<Integer> res, int start, int i) {
int a = res.get(start);
res.set(start,res.get(i));
res.set(i,a);
}
回溯