首页 > 编程语言 >day28 回溯算法part4 代码随想录算法训练营 78. 子集

day28 回溯算法part4 代码随想录算法训练营 78. 子集

时间:2024-02-18 11:23:29浏览次数:32  
标签:day28 nums self 随想录 算法 子集 终止 path 78

题目:78. 子集

我的感悟:

  • 看见弹幕是秒了,我有点不敢相信,自己试了试,没有通过,再看了一眼文字讲解。
  • 感觉懂了点

理解难点:

  • 这题可以没有终止条件,开始我就疑惑这个终止条件怎么写
  • 注意这个nums[i]要添加进入
  • 是可以不写终止的,不会出现无线递归的,
  • 因为是从i+1开始,
  • 那会不会越界??,不会,最后到那个越界的时候,就循环结束了。

代码难点:

  • 有终止条件,就是筛选过滤,取最后的那个叶子节点,
  • 这道题,是求每次迭代的节点。都取一遍,所以,可以没有终止条件

代码示例:

class Solution:
    def subsets(self, nums: List[int]) -> List[List[int]]:
        res = []
        self.backtracking(nums,0,[],res)
        return res
    
    def backtracking(self,nums,start_index,path,result):

        result.append(path[:])

        for i in range(start_index,len(nums)):
            path.append(nums[i])    # 注意这个nums[i]而不是i
            self.backtracking(nums,i+1,path,result)
            path.pop()
    

通过截图:

扩展写法:

资料:

 78.子集  

子集问题,就是收集树形结构中,每一个节点的结果。 整体代码其实和 回溯模板都是差不多的。 

题目链接/文章讲解:https://programmercarl.com/0078.%E5%AD%90%E9%9B%86.html

视频讲解:https://www.bilibili.com/video/BV1U84y1q7Ci

标签:day28,nums,self,随想录,算法,子集,终止,path,78
From: https://www.cnblogs.com/liqi175/p/18018974

相关文章

  • 今天练习2-回溯算法-93. 复原 IP 地址
    注意点&感悟:加油!题目链接:93.复原IP地址自己独立写的代码:classSolution:defrestoreIpAddresses(self,s:str)->List[str]:res=[]self.backtracking(s,0,[],res)returnresdefbacktracking(self,s,start_index,path,res......
  • 今天练习-回溯算法-93. 复原 IP 地址
    注意点&感悟:难吗?不难。难的是克服畏难的心里。题目链接:93.复原IP地址自己独立写的代码:fromtypingimportListclassSolution:defrestoreIpAddresses(self,s:str)->List[str]:res=[]self.backtracking(s,0,[],res)return......
  • day28 回溯算法part4 代码随想录算法训练营 93. 复原 IP 地址
    题目:93.复原IP地址我的感悟:加油!理解难点:开始没理解,start_index的含义start_index是切割后的位置信息。代码难点:代码示例:fromtypingimportListclassSolution:defrestoreIpAddresses(self,s:str)->List[str]:#找3个分割点?#最后......
  • 算法入门:搜索算法
    文章目录1.二分查找2.深度优先搜索(DFS)3.广度优先搜索(BFS)4.DFS与BFS区别 1.二分查找思想:二分查找是一种高效的查找算法,它基于分治思想,适用于已排序的数组。确定搜索范围:首先确定整个数组的搜索范围,通常是从数组的起始位置到结束位置。计算中间位置:计算搜索范围的中......
  • 排序算法总结
    冒泡排序稳定排序时间复杂度o(n2)空间复杂度o(1)点击查看代码staticvoidBubbleSort(){int[]data={1,8,5,7,9,4,6,99,88,74};inti,j,flag;//岗哨模式的冒泡排序for(i=data.Length-1;i>0......
  • Python 机器学习 逻辑回归算法
    ​ 1、理解逻辑回归逻辑回归建立在线性回归之上。在线性回归中,模型预测的是一个连续的数值。而在逻辑回归中,线性回归的输出被输入到Sigmoid函数中,用于预测某个类别的概率。Sigmoid函数是一个S形的曲线,它将任意实数映射到(0,1)区间,适合用来表达概率。逻辑回归广泛应用于各种......
  • 【机器学习】机器学习常见算法详解第4篇:KNN算法计算过程(已分享,附代码)
    本系列文章md笔记(已分享)主要讨论机器学习算法相关知识。机器学习算法文章笔记以算法、案例为驱动的学习,伴随浅显易懂的数学知识,让大家掌握机器学习常见算法原理,应用Scikit-learn实现机器学习算法的应用,结合场景解决实际问题。包括K-近邻算法,线性回归,逻辑回归,决策树算法,集成学习,聚......
  • 代码随想录 day53 买卖股票的最佳时机
    买卖股票的最佳时机这里可以用贪心的思路因为只需要买卖各一次股票所以找到最大最小值算区间差也可以这里用dpdp[i][0]表示持股的收益dp[i][1]表示不持股的收益各自各有一种情况是维持原状还有一种就是持股卖出或者不持股买入取max就可以这里用了两个单位的数组只......
  • 【数据结构】串的表示与模式匹配算法
    串串是内容受限的线性表(栈和队列是操作受限的线性表)串(string)是零个或多个任意字符组成的有限序列S:串名a1a2a3...an:串值n:串长当n=0时,表示空串,空串用\(\phi\)表示子串:一个串中任意个连续字符组成的子序列(含空串)例如“abc”的子串有“”、“a”、“b”、"c"、"ab"......
  • 对最大公约数求法和扩展欧几里得算法的简要概述
    目录1.最大公约数(gcd)1.1更相减损术时间复杂度分析1.2辗转相除法(欧几里得算法)时间复杂度分析2.最小公倍数(lcm)3.裴蜀定理(贝祖定理)3.1扩展欧几里得算法(exgcd)1.最大公约数(gcd)数论中,通常用\(d\|\a\)表示\(d\)能整除\(a\),即\(......