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

leetcode:78. 子集

程序员文章站 2022-04-04 11:13:27
...

题目:

给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。

说明:解集不能包含重复的子集。

示例:

输入: nums = [1,2,3]
输出:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]

分析:

双循环遍历加

代码:

	public List<List<Integer>> subsets(int[] nums) {
		List<List<Integer>> res = new ArrayList<List<Integer>>();
		res.add(new ArrayList<Integer>());
		for (int i : nums) {
			addSubset(res, i);
		}
		return res;
	}

	private void addSubset(List<List<Integer>> res, int num) {
		int l = res.size();
		for (int i = 0; i < l; i++) {
			List<Integer> list = new ArrayList<Integer>(res.get(i));
			list.add(num);
			res.add(list);
		}
	}

效率:

leetcode:78. 子集

总结:

思路简单,效率还行,dfs亦可