java - 回溯算法 | 数组的子集:数组如何删除元素?
问题描述
下面的代码是找出数组的所有子集。这个解决方案使用的是回溯算法。但是我对这个解决方案有点困惑。当 tempList 为 [1,2,3] i = 3 时,调用结束。所以 tempList 变成 [1,2] 我的问题是 tempLits 如何变成1?我画了一张关于我的问题的照片,红线是我感到困惑的地方。谁能帮我这个?任何帮助,将不胜感激!在此先感谢。(我已经调试了这段代码,我仍然无法解决我的问题)
public static List<List<Integer>> subsets(int[] nums) {
List<List<Integer>> list = new ArrayList<>();
Arrays.sort(nums);
backtrack(list, new ArrayList<>(), nums, 0);
return list;
}
private static void backtrack(List<List<Integer>> list, List<Integer> tempList, int[] nums, int start) {
list.add(new ArrayList<>(tempList));
for (int i = start; i < nums.length; i++) {
tempList.add(nums[i]);
backtrack(list, tempList, nums, i + 1);
tempList.remove(tempList.size() - 1);
}
}