我正在处理 Leetcode(78.子集)中的一个问题。方法是正确的,但我不知道如何返回正确的答案。
我用的是网上课程学到的方法。当达到基本情况时,我可以准确地打印出所有子集;但是,我不确定如何将这些子列表添加到结果中List<List<Integer>>并返回它。
我声明了一个全局变量并尝试直接修改它,但是其中的所有子集都是空的。将子集添加到结果列表并返回它的好方法是什么?
这是代码:
class Solution {
List<List<Integer>> result;
public List<List<Integer>> subsets(int[] nums) {
List<Integer> chosen = new ArrayList<>();
List<Integer> numbers = new ArrayList<>();
for (int i : nums){
numbers.add(i);
}
result = new ArrayList<>();
subsetsHelper(numbers, chosen);
return result;
}
public void subsetsHelper(List<Integer> nums, List<Integer> chosen){
if (nums.size() == 0){
// System.out.println(chosen);
result.add(chosen);
}
else{
int x = nums.get(0);
nums.remove(0);
subsetsHelper(nums, chosen);
chosen.add(x);
subsetsHelper(nums, chosen);
nums.add(0, x);
chosen.remove(chosen.size()-1);
}
}
}
这是测试用例和输出:
Your input
[1,2,3]
Output
[[],[],[],[],[],[],[],[]]
Expected
[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]
qq_遁去的一_1
拉丁的传说
相关分类