Java for LeetCode 046 Permutations
Given a collection of numbers, return all possible permutations.
For example,
[1,2,3]
have the following permutations:
[1,2,3]
, [1,3,2]
, [2,1,3]
, [2,3,1]
, [3,1,2]
, and [3,2,1]
.
解题思路:
本题解题方法多多,为防止重复,决定使用Set的dfs算法,JVVA实现如下:
static public List<List<Integer>> permute(int[] nums) { Set<List<Integer>> set=new HashSet<List<Integer>>(); dfs(set,nums,0); return new ArrayList<List<Integer>>(set); } static List<Integer> list=new ArrayList<Integer>(); static public void dfs(Set<List<Integer>> set,int[] nums,int depth){ if(depth==nums.length){ set.add(new ArrayList<Integer>(list)); return; } for(int i=0;i<=depth;i++){ list.add(i,nums[depth]); dfs(set,nums,depth+1); list.remove(i); } }