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