欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

[Trackback] Leetcode 78.

最编程 2024-04-12 16:23:24
...
public class Subsets { public List<List<Integer>> subsets(int[] nums) { List<List<Integer>> result = new ArrayList<>(); backtrack(nums, 0, new ArrayList<>(), result); return result; } private void backtrack(int[] nums, int index, List<Integer> subset, List<List<Integer>> result) { // 将当前子集直接加入结果列表 result.add(new ArrayList<>(subset)); // 从当前位置开始遍历数组 for (int i = index; i < nums.length; i++) { subset.add(nums[i]); // 将当前元素加入子集 // 递归调用,更新当前位置,index+1 下一次回溯跳过当前位置 backtrack(nums, i + 1, subset, result); subset.remove(subset.size() - 1); // 回溯,移除最后一个元素 } } public static void main(String[] args) { Subsets solution = new Subsets(); int[] nums = {1, 2, 3}; List<List<Integer>> subsets = solution.subsets(nums); System.out.println("All subsets:"); for (List<Integer> subset : subsets) { System.out.println(subset); } } }