在Java中查找给定集合的所有子集,并按以下顺序:
import java.util.ArrayList;
import java.util.List;
public class SubsetFinder {
public static List<List<Integer>> findSubsets(List<Integer> set) {
List<List<Integer>> subsets = new ArrayList<>();
findSubsets(set, new ArrayList<>(), 0, subsets);
return subsets;
}
private static void findSubsets(List<Integer> set, List<Integer> currentSubset, int index, List<List<Integer>> subsets) {
if (index == set.size()) {
subsets.add(new ArrayList<>(currentSubset));
return;
}
// 不包含当前元素
findSubsets(set, currentSubset, index + 1, subsets);
// 包含当前元素
currentSubset.add(set.get(index));
findSubsets(set, currentSubset, index + 1, subsets);
currentSubset.remove(currentSubset.size() - 1);
}
public static void main(String[] args) {
List<Integer> set = List.of(1, 2, 3);
List<List<Integer>> subsets = findSubsets(set);
for (List<Integer> subset : subsets) {
System.out.println(subset);
}
}
}
findSubsets
方法使用递归的方式来查找给定集合的所有子集。它接受四个参数:原始集合set
、当前子集currentSubset
、当前处理的元素索引index
和存储所有子集的列表subsets
。index == set.size()
)。如果是,则将当前子集添加到subsets
列表中。findSubsets
方法,将index
增加1,保持当前子集不变。对于包含当前元素的情况,将当前元素添加到当前子集中,再递归调用findSubsets
方法,将index
增加1。递归调用结束后,需要将当前元素从当前子集中移除,以便处理其他情况。main
方法中,我们可以使用示例集合{1, 2, 3}
来测试findSubsets
方法,并打印所有子集。请注意,以上链接仅作为示例,具体的产品选择应根据实际需求和情况进行评估。
领取专属 10元无门槛券
手把手带您无忧上云