【发布时间】:2018-11-13 07:59:52
【问题描述】:
给定一组不同的整数,我想找到所有可能的子集(对于 [1,2,3],代码应该打印[1], [1,2], [1,3], [1,2,3], [2], [2,3], [3](不一定按那个顺序)。
有一些解决方案 (like this one),但我想做的是重新实现下面的解决方案,使用新的递归并且没有 for 循环通过传递索引:(开始 = 0)
public void forSolution(List<List<Integer>> res, int[] nums, List<Integer> list, int start) {
for (int i = start; i < nums.length; i++) {
List<Integer> tmp = new ArrayList<>(list);
tmp.add(nums[i]);
res.add(new ArrayList<>(tmp));
forSolution(res, nums, tmp, i + 1);
}
}
我认为我需要将两个整数传递给该方法,一个用于保存索引记录,另一个用于保存起点,但是我在何时需要进行索引增量时遇到了问题(vs start increment )。 任何帮助将不胜感激。
【问题讨论】:
-
@Prune 这不是真正的重复。请在标记之前阅读整篇帖子。
-
@Yar 这是一个完全相同的副本(除了您的输入是整数列表,而不是字符串)。算法完全相同。
-
@Prune 我编辑了问题以强调差异。基本上我只想通过传递索引来重新实现
for解决方案。