欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

LeetCode:78.子集

程序员文章站 2022-04-04 11:10:51
...

LeetCode:78.子集

一个整数数组的子集,每个元素都有选中还是不选中两中可能,如果都不选中就是[]

所有可能画出来就是一颗树,每一层就是相应的那层元素选中还是不选中

可以使用递归:

public List<List<Integer>> subsets(int[] nums) {

	recursion(nums, 0, new ArrayList<>());
	return result;
}

List<List<Integer>> result = new ArrayList<>();
private void recursion(int[] nums, int level, List<Integer> list) {
	if(level==nums.length) {
		result.add(list);
		return;
	}
	
	//没选择当前的元素
	recursion(nums, level+1, list);
	
	//选择了当前的元素
	List<Integer> copyList = new ArrayList<>();
	copyList.addAll(list);
	copyList.add(nums[level]);
	recursion(nums, level+1, copyList);
}

 

相关标签: LeetCode leetcode