leetcode做题记录0046

leetcode 0046

说明

只是为了记录一下,不求多快,也不深究。

会简要描述思路,代码中不写注释。

如碰到不会做的用了别人代码会在博客中标出。

题目描述

在这里插入图片描述

思路

就是一个深搜,长度到达nums的长度时就把列表加到最终的列表里面。

因为元素各不相同,所以可以直接判断当前列表中是否含有这一元素来选择是否添加进列表。

class Solution {
    public List<List<Integer>> permute(int[] nums) {
		List<List<Integer>> ls = new ArrayList<List<Integer>>();
		List<Integer> l = new ArrayList<Integer>();
		getRange(ls, l, nums);
		return ls;
	}

	public void getRange(List<List<Integer>> ls, List<Integer> l, int[] nums) {
		if (l.size() == nums.length) {
			ArrayList<Integer> copyL = new ArrayList<Integer>();
			for (int i : l) {
				copyL.add(i);
			}
			ls.add(copyL);
			return;
		}

		for (int i = 0; i < nums.length; i++) {
			if (l.contains(nums[i])) {
				continue;
			}
			l.add(nums[i]);
			getRange(ls, l, nums);
			l.remove(l.size() - 1);
		}
	}
}
发布了77 篇原创文章 · 获赞 1 · 访问量 2047

猜你喜欢

转载自blog.csdn.net/Paul_1i/article/details/105309864