首页 > 其他分享 >leetcode代码记录(子集

leetcode代码记录(子集

时间:2024-03-16 11:04:40浏览次数:25  
标签:nums 代码 子集 回溯 path leetcode backtracking

目录

1. 题目:

在这里插入图片描述

给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的
子集
(幂集)。

解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。

示例 1:

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

示例 2:

输入:nums = [0]
输出:[[],[0]]

2. 我的代码:

class Solution:
    def subsets(self, nums: List[int]) -> List[List[int]]:
        # 结果
        result = []
        # 全局路径
        path = []
        
        # 递归 + 回溯
        def backtracking(start_index):
            result.append(path[:])
            
            # for
            for i in range(start_index, len(nums)):
                path.append(nums[i])
                backtracking(i + 1)
                path.pop()
                
            return
            
        backtracking(0)
        return result

仍然是回溯算法,不过不需要有终止条件,因为for循环完了即是循环结束可以作为终止条件(不像组合一样要求组合的长度为k)
每一次进入回溯里的递归都是一个子集,这是特殊的地方。类比于 组合问题 的结果在树的叶子节点一样,子集问题 的结果在树的每个节点。因此,需要对每次进入回溯的路径做个记录,收集得到的就是子集结果。

小结:

关注我给大家分享更多有趣的知识,以下是个人公众号,提供 ||代码兼职|| ||代码问题求解||
添加我的公众号即可:

标签:nums,代码,子集,回溯,path,leetcode,backtracking
From: https://blog.csdn.net/m0_72249799/article/details/136758343

相关文章

  • 10个让你商城APP源代码开发变火爆的小技巧
    在当今数字化时代,商城APP已经成为人们购物的主要途径之一。但是,在激烈的竞争中脱颖而出并不容易。下面分享十个让你的商城APP源代码开发变得火爆的小技巧。首先,用户体验至关重要。确保你的APP设计简洁直观,易于操作。优化页面加载速度,减少用户等待时间。同时,提供个性化推荐和搜......
  • 滴水逆向笔记系列-PE总结2-25.FileBuffer-ImageBuffer-26.代码节空白区添加代码-27.新
    第二十五课FileBuffer-ImageBuffer1.PE文件执行的总过程第二十三课已经说过了,文件先复制一份读入虚拟内存中(FileBuffer),接着要运行时将FileBuffer中的文件数据拉伸,重载到4GB的虚拟内存中(ImageBuffer)但ImageBuffer还不是文件运行时在内存的真正状态,ImageBuffer还没表示文件已......
  • 访问Webapp目录下面的html文件变为代码
    一、问题由来一位朋友最近在学习JavaWeb开发,使用Servlet做练习的时候,突然出现一个问题。他去访问自己创建的html文件时,发现返回的数据是html代码,而不是解析后的页面。很是疑惑,自己尝试着解决这个问题,很久都没有解决问题,然后就找到我。问题复现情况如下,正常来说,访问html页......
  • LeetCode01.两数之和
    ques:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例1:输入:nums=......
  • html中如何让网页禁用右键禁止查看源代码
    在网页中,辛辛苦苦写的文章,被别人复制粘贴给盗用去另很多站长感到非常无奈,通常大家复制都会使用选取右键复制,或CTRL+C等方式,下面介绍几种禁止鼠标右键代码,可减少网页上文章被抄袭的几率,当然对高手来说,破解也很简单,不管怎么样,我们还是一起试试吧。使用方法:以下代码加入到<scrip......
  • 视频直播系统源码,异步处理实现代码分析
    视频直播系统源码,异步处理实现代码分析@OverrideprotectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{System.out.println("doget");method3(request,response);}/***使用asyncConte......
  • Leetcode刷题-动态规划-最长回文子串
    链接:5.最长回文子串-力扣(LeetCode)给你一个字符串s,找到s中最长的回文子串,如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。示例1:输入:s="babad"输出:"bab"解释:"aba"同样是符合题意的答案。示例2:输入:s="cbbd"输出:"bb"提示:1<=s.length<=1000s......
  • 代码随想录 第21天 | ● 530.二叉搜索树的最小绝对差 ● 501.二叉搜索树中的众数 ●
    leetcode:530.二叉搜索树的最小绝对差-力扣(LeetCode)思路:判断最小绝对差,肯定用中序遍历,双指针一前一后依次判断。classSolution{intresult=Integer.MAX_VALUE;TreeNodepre=null;publicintgetMinimumDifference(TreeNoderoot){if(root==......
  • 【机器学习】机器学习创建算法第2篇:K-近邻算法【附代码文档】
    机器学习(算法篇)完整教程(附代码资料)主要内容讲述:机器学习算法课程定位、目标,K-近邻算法,1.1K-近邻算法简介,1.2k近邻算法api初步使用定位,目标,学习目标,1什么是K-近邻算法,1Scikit-learn工具介绍,2K-近邻算法API,3案例,4小结。K-近邻算法,1.3距离度量学习目标,1欧式距离,2......
  • 【LeetCode 1466】重新规划路线
    题目描述原题链接:LeetCode.1466重新规划路线解题思路路线网形成一棵树,说明每个节点都参与两条路线,或作为起点或作为终点;要想所有城市都可以通往城市0,必须要把所有逆向的路线都变更一次方向,逆向路线总数量即为答案;朴素BFS版本从城市0出发,遍历每个从已通城市出发的......