我正在解决一个子集问题,并初始化一个名为list的arraylist和一个名为result的arraylist的arraylist。在向结果添加列表时,我应该使用result.add(new ArrayList<>(list))
。你能告诉我为什么吗?代码如下所示。非常感谢。
public ArrayList<ArrayList<Integer>> subsets(int[] nums) {
ArrayList<ArrayList<Integer>> result = new ArrayList<>();
if (nums == null || nums.length == 0) {
return result;
}
Arrays.sort(nums);
ArrayList<Integer> list = new ArrayList<>();
subsetsHelper(nums, result, list, 0);
return result;
}
public void subsetsHelper(int[] nums, ArrayList<ArrayList<Integer>> result, ArrayList<Integer> list, int start) {
result.add(new ArrayList<Integer>(list));
for (int i = start; i < nums.length; ++i) {
list.add(nums[i]);
subsetsHelper(nums, result, list, i + 1);
list.remove(list.size() - 1);
}
}
答案 0 :(得分:0)
在subsetsHelper()中:
“list”想要存储整数。
“result”想要存储整数的ArrayLists。
result.add(new ArrayList<Integer>(list))
可能只是result.add(list)
您所做的就是先将列表中的所有项目复制到新的ArrayList<Integer>
中,然后将该ArrayList放入结果中。