阅读量:0
在Java中,可以使用递归的方法来输出数组的所有子集。以下是一个示例代码:
import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class Subsets { public static void main(String[] args) { int[] nums = {1, 2, 3}; List<List<Integer>> result = subsets(nums); System.out.println(result); } public static List<List<Integer>> subsets(int[] nums) { List<List<Integer>> result = new ArrayList<>(); backtrack(result, new ArrayList<>(), nums, 0); return result; } private static void backtrack(List<List<Integer>> result, List<Integer> tempList, int[] nums, int start) { result.add(new ArrayList<>(tempList)); for (int i = start; i < nums.length; i++) { tempList.add(nums[i]); backtrack(result, tempList, nums, i + 1); tempList.remove(tempList.size() - 1); } } }
在这个示例中,subsets
函数接收一个整数数组nums
作为输入,然后调用backtrack
函数来生成所有子集。backtrack
函数使用递归的方式遍历数组的每个元素,并将其添加到临时列表tempList
中。当遍历到数组的末尾时,将当前的tempList
添加到结果列表result
中。最后,返回结果列表result
。