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);
    	}
    }

 

posted @ 2015-05-14 19:59  TonyLuis  阅读(469)  评论(0编辑  收藏  举报