【leetcode刷刷】39. 组合总和、40.组合总和II、131.分割回文串

39. 组合总和

  1. 一开始写的时候没注意到可以重复,注意到可以重复之后就去掉了start_index,但是出现了类似[2,2,3][2,3,2]这种重复。看了题解之后,发现加上start_index,但是进for循环的时候start_index还是i,这样就是既可以重复也不会重新取之前的数。
class Solution:def combinationSum(self, candidates: List[int], target: int) -> List[List[int]]:self.res = []self.backtracking(candidates, target, [], 0)return self.resdef backtracking(self, candidates, target, path, start_index):if target == 0:# print(path)self.res.append(path[:])return if target < 0: return for i in range(start_index, len(candidates)):if target-candidates[i] < 0:continuepath.append(candidates[i])self.backtracking(candidates, target-candidates[i], path, i)path.pop()

40.组合总和II

  1. 相比于之前这个题的区别,就是这个在candidates里可以重复,但是最后res里不能有重复的list。想要去重还挺难想的,不过题解里给了一个思路,就是在树的同一层进行操作,即可进行去重操作。递归的时候不在树的同一层,因此不需要有去重操作。
class Solution:def combinationSum2(self, candidates: List[int], target: int) -> List[List[int]]:self.res = []candidates.sort()self.backtracking(candidates, target, 0, [])return self.resdef backtracking(self, candidates, target, start_index, path):if target == 0:self.res.append(path[:])returnfor i in range(start_index, len(candidates)):if target-candidates[i] < 0: continue   # 剪枝# 树的同一层,如果有重复的,跳过if candidates[i] == candidates[i-1] and i > start_index: continuepath.append(candidates[i])self.backtracking(candidates, target-candidates[i], i+1, path)path.pop()

131.分割回文串

  1. 这题好难。。没有思路。。根本想不到分割和回溯又什么关系。所以直接看的题解。可能需要复习复习。
  2. 题解给的解释:
    - 递归用于纵向遍历
    - for循环用于横向遍历
    - 当切割线迭代至字符串末尾,说明找到一种方法
    - 类似组合问题,为了不重复切割同一位置,需要start_index来做标记下一轮递归的起始位置(切割线)
    - 关于模拟切割线,其实就是index是上一层已经确定了的分割线,i是这一层试图寻找的新分割线
class Solution:def partition(self, s: str) -> List[List[str]]:self.res = []self.backtracking(s, 0, [])return self.resdef backtracking(self, s, start_index, path):if start_index == len(s):self.res.append(path[:])return for i in range(start_index, len(s)):  # 用start_index作为分割点if self.is_palindrome(s, start_index, i):path.append(s[start_index:i+1])self.backtracking(s, i+1, path)path.pop()def is_palindrome(self, s, start, end):i = startj = endwhile(i < j):if s[i] != s[j]:return Falsei += 1j -= 1return True
# 若反序和正序相同,意味着这是回文串
if s[start_index: i + 1] == s[start_index: i + 1][::-1]:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/661493.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

爬虫代理如何被合理使用?静态IP怎么助力网络爬虫采集数据?

随着互联网的发展&#xff0c;网络爬虫作为一种重要的数据采集手段&#xff0c;被广泛应用于各个领域。但在实际使用中&#xff0c;很多用户会遇到IP被封禁、数据采集受限等问题&#xff0c;这些问题往往是由于不合理的代理使用导致的。本文将重点介绍如何合理使用爬虫代理&…

C#,斯特林数(Stirling Number)的算法与源代码

1 斯特林数 在组合数学&#xff0c;斯特林数可指两类数&#xff0c;第一类斯特林数和第二类斯特林数&#xff0c;都是由18世纪数学家James Stirling提出的。它们自18世纪以来一直吸引许多数学家的兴趣&#xff0c;如欧拉、柯西、西尔沃斯特和凯莱等。后来哥本哈根&#xff08;…

Docker容器引擎私有仓库的搭建和管理

目录 一、私有仓库搭建和管理 &#xff08;一&#xff09;搭建本地私有仓库 1.拉取registry镜像 2.修改docker配置文件并重启 3.运行registry容器 4.给镜像打标签 5.上传到私有仓库 6.查看私有仓库的所有镜像 7.从私有仓库拉取镜像 &#xff08;1&#xff09;删除cen…

开源机器人ros 基本概念详细介绍

ROS&#xff08;Robot Operating System&#xff09;的基本概念构成了整个系统的框架和运作方式。以下是一些核心的基本概念&#xff1a; 1. 节点&#xff08;Nodes&#xff09;&#xff1a; - 节点是ROS图中的基本执行单元&#xff0c;它是运行单个任务的一个进程。节点可以…

网络协议 UDP协议

网络协议 UDP协议 在之前的文章中有对UDP协议套接字的使用进行讲解&#xff0c;本文主要对UDP协议进行一些理论补充。 文章目录 网络协议 UDP协议1. 概念2. UDP协议格式2.1 数据报长度2.2 校验和/检验和2.2.1 CRC校验2.2.2 MD5算法 1. 概念 UDP&#xff0c;即User Datagram P…

gitlab操作手册

git操作篇 1. 项目克隆 git clone gitgitlab.test.cn:pro/project1.git2. 项目的提交 注&#xff1a;如果要查看文件的状态可以用git status命令&#xff1a; 如上图所示&#xff0c;文件已经修改了。 3. 项目的推送 git push origin feature/test01注&#xff1a;如果要查…

Qt应用软件【协议篇】modbus-tcp示例

文章目录 APIModbus TCP 主机(客户端)示例Modbus TCP 从机(服务器)示例API QModbusDevice: 所有 Modbus 设备的基类,提供了设备的基本功能,例如连接、断开连接、状态和错误处理。QModbusClient: 用于实现 Modbus 客户端功能的基类。它派生自 QModbusDevice。QModbusServ…

nodejs+vue+ElementUi宠物领养救助网站0w6wc

宠物领养救助平台采用B/S架构&#xff0c;数据库是MySQL。网站的搭建与开发采用了先进的nodejs进行编写&#xff0c;使用了vue框架。该系统从两个对象&#xff1a;由管理员和用户来对系统进行设计构建。主要功能包括&#xff1a;个人信息修改&#xff0c;对用户、宠物类别、宠物…

深信服技术认证“SCSA-S”划重点:安全事件管理处置

为帮助大家更加系统化地学习网络安全知识&#xff0c;以及更高效地通过深信服安全服务认证工程师考核&#xff0c;深信服特别推出“SCSA-S认证备考秘笈”共十期内容&#xff0c;“考试重点”内容框架&#xff0c;帮助大家快速get重点知识~ 划重点来啦 *点击图片放大展示 深信…

MySQL-运维-主从复制

一、概述 二、原理 三、搭建 1、服务器准备 2、主库配置 &#xff08;1&#xff09;、修改配置文件/etc/my.cnf &#xff08;2&#xff09;、重启MySQL服务器 &#xff08;3&#xff09;、登录mysql&#xff0c;创建远程链接的账号&#xff0c;并授予主从复制权限 &#xff0…

shell脚本-免交互

一、Here Document免交互&#xff1a; 1.交互概述&#xff1a; 交互&#xff1a;当计算机播放某多媒体程序的时候&#xff0c;编程人员可以发出指令控制该程序的运行&#xff0c;而不是程序单方面执行下去&#xff0c;程序在接受到编程人员相应的指令后而相应地做出反应。 对于…

铁轨语义分割(Unet结合resnet系列)

数据介绍 一类是图片&#xff0c;一类是图像标签。 引入库&#xff0c;处理数据 import torch.nn as nn import torch import torch.nn.functional as F import os from PIL import Image import torch from torch.utils.data import Dataset import torchvision.transfor…

Unity SRP 管线【第七讲:URP LOD实现以及Reflections反射探针】

目录 一、URP LOD 组件1、LOD Group的使用2、LOD切换原理Cross Fade(淡入淡出)模式Animated Cross-Fading如果未设置Clip&#xff0c;并且Fade Transition Width不为0LOD物体烘培 SpeedTree 模式 二、反射探针1. 获取反射探针数据2. 环境光照明 IBL3. 反射探针&#xff08;Refl…

iOS自动打包如何用Python实现

在Python中实现iOS自动打包的过程需要使用第三方库和工具&#xff0c;如pyobjc和appdirs。以下是一个基本的Python脚本示例&#xff0c;用于自动打包iOS应用程序&#xff1a; python复制代码 import os import appdirs import subprocess import pyobjc # 获取应用程序目…

部署前后端分离项目详细教程

部署前后端分离项目详细教程 1、准备工作 首先你需要一台服务器&#xff0c;然后在服务器上安装好你所需要的环境&#xff0c;我这里用的宝塔界面来安装环境。 如果有人不知道怎么安装宝塔界面&#xff0c;可参考这篇文章&#xff0c;如果不知道怎么买服务器&#xff0c;可以参…

Python学习笔记——Collatz序列

Collatz序列&#xff0c;也称为3n1问题&#xff0c;遵循以下3个规则获得序列中的下一个数: 1、如果n是偶数&#xff0c;则下一个数 n n / 22、如果n是奇数&#xff0c;则下一个数 n n * 3 13、如果n为1&#xff0c;则停止计算&#xff1b;否则重复计算获取下一个数 从任意一…

golang网络编程day4

golang网络编程day4 get和post的区别resful编程golang请求头golangheader内容类型和字符编码http请求头缓存和过期应用golang 请求头跨域请求应用http请求头用户代理应用golang响应头 get和post的区别 在前面的学习我只在应用场景上做了一个区别的举例,这里是进一步的学习有哪…

菜鸡后端的前端学习记录-2

前言 记录一下看视频学习前端的的一些笔记&#xff0c;以前对Html、Js、CSS有一定的基础&#xff08;都认得&#xff0c;没用过&#xff09;&#xff0c;现在不想从头再来了&#xff0c;学学Vue框架&#xff0c;不定时更新&#xff0c;指不定什么时候就鸽了。。。。 忘了记一下…

前端工程化基础(四):Git代码版本控制工具详解

Git版本控制工具详解 认识版本控制&#xff08;版本控制&#xff09; 是维护 工程蓝图的标准做法&#xff0c;能追踪工程蓝图从诞生一直到定案的过程版本控制也是 一种软件工程技巧&#xff0c;借此能在软件开发的过程中&#xff0c;确保不同的人所编辑的同一程序都能得到同步…

MySQL的存储格式,MySQL的触发器

1&#xff0c;MySQL的存储格式 在MySQL中&#xff0c;创建存储函数使用create function关键字&#xff0c;其基本形式如下: create function func_name ( [param_name type[ ,...]]) returns type [characteristic ... ] begin routine_body end; 参数说明: (1) func_…