LeetCode题目46. 全排列
给定一个没有重复数字的序列,返回其所有可能的全排列。
示例1
输入: [1,2,3]
输出:
[
[1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2],
[3,2,1]
]
完整代码
class Solution {
private List<List<Integer>> ansList;
public List<List<Integer>> permute(int[] nums) {
this.ansList=new ArrayList();
if(nums==null||nums.length==0) return ansList;
ArrayList<Integer>list=new ArrayList();
for(int num:nums) list.add(num);
trace(list,0);
return ansList;
}
private void trace(ArrayList<Integer> list,int index){
if(index==list.size()) {
ansList.add(new ArrayList<Integer>(list));
return;
}
for(int i=index;i<list.size();i++){
Collections.swap(list,i,index);
trace(list,index+1);
Collections.swap(list,i,index);
}
}
}
更多LeetCode题目及答案解析见GitHub: https://github.com/on-the-roads/LeetCode
剑指offer题目及答案解析:https://github.com/on-the-roads/SwordToOffer