给定一个没有重复数字的序列,返回其所有可能的全排列。示例:
输入: [1,2,3]
输出:
[
[1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2],
[3,2,1]
]dfs的递归方法
private List<List<Integer>> ret=new ArrayList();
public List<List<Integer>> permute(int[] nums) {
TreeSet<Integer> set=new TreeSet();
for(int i:nums) set.add(i);
helper(new ArrayList(),set);
return ret;
}
private void helper(List<Integer> list,TreeSet<Integer> remain){
if(remain.size()==0) ret.add(list);
TreeSet<Integer> set=new TreeSet(remain);
while(set.size()>0){
int first=set.pollFirst();
TreeSet<Integer> newSet=new TreeSet(remain);
List<Integer> newList=new ArrayList(list);
newSet.remove(first);
newList.add(first);
helper(newList,newSet);
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。