LeetCode 78 子集
【摘要】 LeetCode 78首先数组内的元素是不会重复的,但返回子集不能有重复关于题解,有一个非常巧妙的解法,追加子集,将思路进行画图讲解1.空集合是所有集合的子集2.每次将i追加到已有子数组的集合中3.当指针移动到最后一个元素即遍历完毕代码部分public static List<List<Integer>> subsets(int[] nums) { List<List<Integer>...


LeetCode 78
首先数组内的元素是不会重复的,但返回子集不能有重复
关于题解,有一个非常巧妙的解法,追加子集,将思路进行画图讲解

1.空集合是所有集合的子集
2.每次将i追加到已有子数组的集合中
3.当指针移动到最后一个元素即遍历完毕
代码部分
public static List<List<Integer>> subsets(int[] nums) {
List<List<Integer>> result = new ArrayList<List<Integer>>();
result.add(new ArrayList<>());
//子集中必然包含一个空数组
for (int num : nums) {
List<List<Integer>> sub = new ArrayList<List<Integer>>();
for (List<Integer> integers : result) {
List<Integer> temp = new ArrayList<>(integers);
temp.add(num);
sub.add(temp);
}
for (List<Integer> integers : sub) {
result.add(integers);
}
}
return result;
}
public static void main(String[] args) {
int[] nums = {
2,6,9,8,7
};
System.out.println(subsets(nums));
}
[[], [2], [6], [2, 6], [9], [2, 9], [6, 9], [2, 6, 9], [8], [2, 8], [6, 8], [2, 6, 8], [9, 8], [2, 9, 8], [6, 9, 8], [2, 6, 9, 8], [7], [2, 7], [6, 7], [2, 6, 7], [9, 7], [2, 9, 7], [6, 9, 7], [2, 6, 9, 7], [8, 7], [2, 8, 7], [6, 8, 7], [2, 6, 8, 7], [9, 8, 7], [2, 9, 8, 7], [6, 9, 8, 7], [2, 6, 9, 8, 7]]
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)