【LeetCode 46】【LeetCode 47】全排列

【LeetCode 46】【LeetCode 47】全排列,第1张

【LeetCode 46】【LeetCode 47】全排列

46

    public static List> permute(int[] nums) {
    	List ret = new ArrayList();
    	List> list = new ArrayList>();
    	boolean[] read = new boolean[nums.length];
    	int deep = 0;
    	dfs(nums, ret, list, read, deep);
		return list;
    }
    
    private static void dfs(int[] nums, List ret, List> list, boolean[] read, int deep) {
    	if (deep == nums.length)
    	{
    		List copy = new ArrayList();
    		copy.addAll(ret);
    		list.add(copy);
    		return;
    	}
    	
    	for (int i = 0; i < nums.length; i++)
    	{
    		if (!read[i])
    		{
    			read[i] = true;
    			ret.add(nums[i]);
    			dfs(nums, ret, list, read, deep+1);
    			ret.remove(ret.size()-1);
    			read[i] = false;
    		}
    	}
    }
    

47

    public static List> permuteUnique(int[] nums) {
    	Arrays.sort(nums);
    	List ret = new ArrayList();
    	List> list = new ArrayList>();
    	boolean[] read = new boolean[nums.length];
    	int deep = 0;
    	dfs(nums, ret, list, read, deep);
		return list;
    }
    
    private static void dfs(int[] nums, List ret, List> list, boolean[] read, int deep) {
    	if (deep == nums.length)
    	{
    		List copy = new ArrayList();
    		copy.addAll(ret);
    		list.add(copy);
    		return;
    	}
    	
    	for (int i = 0; i < nums.length; i++)
    	{
    		if (i > 0 && nums[i] == nums[i-1] && read[i-1] == false) 
    			continue;
    		if (!read[i])
    		{
    			read[i] = true;
    			ret.add(nums[i]);
    			dfs(nums, ret, list, read, deep+1);
    			ret.remove(ret.size()-1);
    			read[i] = false;
    		}
    	}
    }

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5687098.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存