LeetCode 78 子集

举报
赵KK日常技术记录 发表于 2023/06/29 21:24:12 2023/06/29
【摘要】 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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。