首页 > 代码库 > 【LeetCode】Subsets 解题报告
【LeetCode】Subsets 解题报告
【题目】
Given a set of distinct integers, S, return all possible subsets.
Note:
- Elements in a subset must be in non-descending order.
- The solution set must not contain duplicate subsets.
For example,
If S = [1,2,3]
, a solution is:
[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ]
【解析】
题意:求一个集合的所有子集合,包括空集合和它本身。
与组合生成算法 【LeetCode】Combinations 解题报告类似。
先排好序,从前往后取相应数目的元素。
【回溯法】
public class Solution { int[] S = {}; int len = 0; List<List<Integer>> ans = new ArrayList<List<Integer>>(); public List<List<Integer>> subsets(int[] S) { this.S = S; this.len = S.length; Arrays.sort(S); // length of subsets: from 0 to S.length for (int i = 0; i <= len; i++) { backTracking(new ArrayList<Integer>(), 0, i); } return ans; } public void backTracking(List<Integer> list, int from, int tar) { if (list.size() == tar) { List<Integer> res = new ArrayList<Integer>(list); ans.add(res); } else { for (int i = from; i < len; i++) { list.add(S[i]); backTracking(list, i + 1, tar); list.remove(new Integer(S[i])); } } } }
【LeetCode】Subsets 解题报告
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。