LeetCode-78-子集

这篇具有很好参考价值的文章主要介绍了LeetCode-78-子集。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目描述:
给你一个整数数组 nums ,数组中的元素 互不相同。返回该数组所有可能的子集(幂集)。
解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。

题目链接:LeetCode-78-子集

解题思路:递归回溯
题目的要求是不能有重复的子集,其实给的数组是互不相同的,按照普通递归思路就好了。

代码实现:文章来源地址https://www.toymoban.com/news/detail-707911.html

class Solution {
    List<List<Integer>> res = new ArrayList<>();
    List<Integer> path = new ArrayList<>();
    public List<List<Integer>> subsets(int[] nums) {
        backTracking(nums, 0);
        return res;
    }

    public void backTracking(int[] nums, int index){
        res.add(new ArrayList<>(path));// 需要注意的是现在每个节点都是一个解集,而不仅是叶子节点了
        if (index >= nums.length){
            return;
        }
        for (int i = index; i < nums.length; i++) {
            path.add(nums[i]);
            backTracking(nums, i+1);
            path.remove(path.size()-1);
        }
    }
}

到了这里,关于LeetCode-78-子集的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【数据结构】回溯算法公式化解题 leetcode经典题目带刷:全排列、组合、子集

    一、什么是回溯算法 回溯算法(Backtracking Algorithm)是一种解决 组合问题 、 排列问题 、 选择问题 等一类问题的常用算法。它通过尝试所有可能的选择来找到问题的解,当发现当前选择不符合要求时,就回溯到之前的状态,然后尝试其他的选择。 1、基本思想: 从问题的起

    2024年02月11日
    浏览(42)
  • 【LeetCode】416.分割等和子集

    给你一个  只包含正整数  的  非空  数组  nums  。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 示例 1: 示例 2: 提示: 1 = nums.length = 200 1 = nums[i] = 100 实际上是求能否从背包里选取元素,使这些元素之和等于数组所有元素之和的一半。dp

    2024年02月11日
    浏览(35)
  • leetcode90. 子集 II(java)

    来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/subsets-ii 给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。返回的解集中,子集可以按 任意顺序 排列。 示例 1: 输入:nums = [1,2,2] 输出:[[],[1],[1,2],

    2024年02月09日
    浏览(42)
  • LeetCode416. 分割等和子集

    一、题目 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 示例 1: 示例 2: 提示: 1 = nums.length = 200 1 = nums[i] = 100 二、题解 方法一:0-1背包二维数组 步骤1:理解题目以及01 背包问题 在 01 背包问题中,

    2024年02月10日
    浏览(45)
  • Leetcode 416 分割等和子集

    题意理解 :         给你一个  只包含正整数  的  非空  数组  nums  。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。         即将数组的元素分成两组,每组数值=sum(nums)/2         若能分成这样的两组,则返回true,否则返回false      

    2024年02月01日
    浏览(43)
  • LeetCode讲解篇之90. 子集 II

    初始化一个变量start表示当前从哪里开始遍历nums 搜索过程的数字组合加入结果集 从start开始遍历nums 如果当前元素和前一个元素相等,前一个元素没被使用,则触发剪枝去重操作,跳过当次遍历 否则,将start赋值为当前元素的下一个,递归搜索,然后跳过重复的数字,进行剪

    2024年01月20日
    浏览(39)
  • leetcode做题笔记90. 子集 II

    给你一个整数数组  nums  ,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。 解集  不能  包含重复的子集。返回的解集中,子集可以按  任意顺序  排列。 本题与78子集问题很像,只需在78代码的基础上考虑数字重复问题即可,对于数字重复可先将数组内

    2024年02月12日
    浏览(32)
  • 【LeetCode热题100】打卡第23天:最小覆盖&子集

    大家好,我是知识汲取者,欢迎来到我的LeetCode热题100刷题专栏! 精选 100 道力扣(LeetCode)上最热门的题目,适合初识算法与数据结构的新手和想要在短时间内高效提升的人,熟练掌握这 100 道题,你就已经具备了在代码世界通行的基本能力。在此专栏中,我们将会涵盖各种

    2024年02月09日
    浏览(33)
  • 78-快速排序练习-LeetCode面试题17.14.最小k个数

    题目 设计一个算法,找出数组中最小的k个数。以任意顺序返回这k个数均可。 示例: 输入: arr = [1,3,5,7,2,4,6,8], k = 4 输出: [1,2,3,4] 提示:     0 = len(arr) = 100000     0 = k = min(100000, len(arr)) 思路 注意到题目要求「任意顺序返回这 k 个数即可」,因此我们只需要确保前 k 小的

    2023年04月12日
    浏览(31)
  • leetcode416. 分割等和子集(动态规划-java)

    来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/partition-equal-subset-sum 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 示例 1: 输入:nums = [1,5,11,5] 输出:true 解释:数组可以分割成 [1, 5, 5] 和 [11] 。

    2024年02月11日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包