46. Permutations - Medium
前往題目
想法
- 之前做過的簡單backtracking
思路
backtracking
check
是否數字已存在,以免重複加入
暫存的list
可能可以用其他實作方式,可以removeLast in O(1)
,不然arraylist
要移除最後一項需要N
次操作
Code
class Solution {
List<List<Integer>> res;
public List<List<Integer>> permute(int[] nums) {
res = new ArrayList<List<Integer>>();
backtrack(nums, new ArrayList<>());
return res;
}
private void backtrack(int[] nums, List<Integer> comb) {
if (comb.size() == nums.length) {
res.add(new ArrayList<Integer>(comb));
return;
}
for (int i = 0; i < nums.length; ++i) {
if (comb.contains(nums[i]))
continue;
comb.add(nums[i]);
backtrack(nums, comb);
comb.remove(comb.size() - 1);
}
}
}
46. Permutations - Medium
https://f88083.github.io/2024/02/11/46-Permutations-Medium/