67,633
社区成员
发帖
与我相关
我的任务
分享
深度搜索优先,树型结构
class Solution {
public List<List<Integer>> permute(int[] nums) {
int len = nums.length;
List<List<Integer>> list = new ArrayList<>();
if (len==0){
return list;
}
Deque<Integer> deque = new ArrayDeque<>();
boolean[] isused = new boolean[len];//标记该点元素是否可用
method(nums,len,0,deque,isused,list);
return list;
}
private void method(int[] nums, int len, int height, Deque<Integer> deque, boolean[] isused, List<List<Integer>> list) {
if (height==len){
list.add(new ArrayList<>(deque));
return;
}
for (int i = 0; i < len; i++) {
if (isused[i]){
continue;
}
deque.addLast(nums[i]);
isused[i]=true;
method(nums,len,height+1,deque,isused,list);
deque.removeLast();
isused[i]=false;
}
}
}