当前位置: 首页 > news >正文

LeetCode 第二十三天 2024.8.9

1. :组合总和
 题目链接: 39. 组合总和 - 力扣(LeetCode)
应用条件:回溯,递归

难点:

这道题相比之前简单的组合问题,难点在于可以重复选择,重复选择也是需要startindex的,因为如果没有startindex在递归中将会一直在第一个陷入死循环。只不过这次在for循环中的递归中把startindex从原来的i+1变成i即可包含重复选择了。

个人错误:

没记startindex,一开始忽略了sum(curlist) >  target

思路:

class Solution:def combinationSum(self, candidates: List[int], target: int) -> List[List[int]]:curlist  = []res = []startindex = 0self.backtracking(candidates,target,curlist,res,startindex)return resdef backtracking(self,nums,target,curlist,res,startindex):if sum(curlist) >  target:returnif sum(curlist) == target:res.append(curlist[:])returnfor i in range(startindex,len(nums)):curlist.append(nums[i])self.backtracking(nums,target,curlist,res,i)curlist.pop()

2. :组合总和II
 题目链接: 40. 组合总和 II - 力扣(LeetCode)
应用条件:回溯

难点:

这道题最难的点在于数组中有重复元素,但在res中不让有重复的答案,所以我们需要在递归过程中对结果集元素去重。curlist相当于书的枝,for循环想到与树的层,这里要明确我们要对层去重,枝中是可以包含重复元素的。所以可以先对数组进行排列,然后在对i的for循环中,判断在i>startindex的情况下nums[i] == nums[i-1]的情况,如果满足条件就continue,注意在这里,一定是i>startindex,不能i>0,因为如果i> 0就把枝中的也去掉了。

个人错误:

思路:

class Solution:def combinationSum2(self, candidates: List[int], target: int) -> List[List[int]]:curist = []res = []startindex = 0candidates.sort()self.backtracking(candidates,target,curist,res,startindex)return resdef backtracking(self,nums,target,curist,res,startindex):if sum(curist) > target:returnif sum(curist) == target:res.append(curist[:])returnfor i in range(startindex,len(nums)):if i >startindex and nums[i] == nums[i-1]:continuecurist.append(nums[i])self.backtracking(nums,target,curist,res,i+1)curist.pop()

3. :分割回文串
 题目链接: 131. 分割回文串 - 力扣(LeetCode)
应用条件:回溯

难点:

这道题的难点在于能否想到递归终止条件是startindex == len(s),

个人错误:

思路:

class Solution:def partition(self, s: str) -> List[List[str]]:res = []curlist = []startindex = 0self.backtracking(s,curlist,res,startindex)return resdef backtracking(self,s,curlist,res,startindex):if startindex ==len(s):res.append(curlist[:])returnfor i in range(startindex,len(s)):if s[startindex: i + 1] == s[startindex: i + 1][::-1]:curlist.append(s[startindex:i+1])self.backtracking(s, curlist, res,i+1)   curlist.pop()  

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • NPM使用教程
  • Halcon玩转机器视觉专栏特殊声明
  • springboot 实现阿里云点播系统使用凭证播放
  • JS 逆向高阶之 - nodejs 常用的几个加密, 解密的库
  • AICG学习(一)搭建魔搭,LoRA
  • Javascript——原始数据类型的自动装箱
  • 甄选范文“论软件设计方法及其应”软考高级论文系统架构设计师论文
  • MySQL —— 表的设计
  • 简单聊一聊Vue是如何管理多环境的后端服务的?
  • leetcode787. K 站中转内最便宜的航班——优先队列优化的Dijkstra算法+剪枝
  • 【C#】计算多边形的面积
  • Redis的面试题
  • 数据类型练习
  • 25-原理图BOM的输出
  • 智慧宠物护理:智能听诊器引领健康监测新潮流
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • Angular2开发踩坑系列-生产环境编译
  • Hibernate最全面试题
  • JAVA_NIO系列——Channel和Buffer详解
  • java取消线程实例
  • js学习笔记
  • nginx 配置多 域名 + 多 https
  • Python3爬取英雄联盟英雄皮肤大图
  • SpiderData 2019年2月25日 DApp数据排行榜
  • Spring Boot快速入门(一):Hello Spring Boot
  • 浮现式设计
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 少走弯路,给Java 1~5 年程序员的建议
  • 说说动画卡顿的解决方案
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 王永庆:技术创新改变教育未来
  • 学习Vue.js的五个小例子
  • 自制字幕遮挡器
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • ​HTTP与HTTPS:网络通信的安全卫士
  • ​决定德拉瓦州地区版图的关键历史事件
  • #565. 查找之大编号
  • #Datawhale X 李宏毅苹果书 AI夏令营#3.13.2局部极小值与鞍点批量和动量
  • #NOIP 2014# day.2 T2 寻找道路
  • #如何使用 Qt 5.6 在 Android 上启用 NFC
  • $$$$GB2312-80区位编码表$$$$
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (3)选择元素——(17)练习(Exercises)
  • (二)延时任务篇——通过redis的key监听,实现延迟任务实战
  • (二十九)STL map容器(映射)与STL pair容器(值对)
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (七)Appdesigner-初步入门及常用组件的使用方法说明
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (四) Graphivz 颜色选择
  • (五)关系数据库标准语言SQL
  • (原)本想说脏话,奈何已放下
  • (转)甲方乙方——赵民谈找工作