78. Subsets - Medium
前往題目
之前寫過了,這次一看到就知道要用backtracking
但是細節漏了一點
想法
- 用
backtracking
思路
- 每次疊代加入當前
array
到答案裡 - 並且用下一個
num
繼續呼叫backtrack
- 循環結束前把最後一位去掉
傳i + 1
的原因是讓演算法不要取到同一個數字
Code
class Solution {
List<List<Integer>> res;
public List<List<Integer>> subsets(int[] nums) {
res = new ArrayList<List<Integer>>();
backtrack(nums, new ArrayList<>(), 0);
return res;
}
private void backtrack(int[] nums, List<Integer> element, int start) {
// Add the possible list
res.add(new ArrayList<Integer>(element));
for (int i = start; i < nums.length; ++i) {
element.add(nums[i]);
backtrack(nums, element, i + 1);
// Eject
element.remove(element.size() - 1);
}
}
}
2024/03/10
- 有寫出來,一個小
bug
,應該要是i
的地方寫成index
造成無限迴圈
78. Subsets - Medium
https://f88083.github.io/2024/01/29/78-Subsets-Medium/