【回溯】总结

1、 组合和子集问题

组合问题需要满足一定要求才算作一个答案,比如数量要求(k个数),累加和要求(=target)。
子集问题是只要构成一个新的子集就算作一个答案。

进阶:去重逻辑。

  1. 一般都是要对同层去重。比如[1,1,2,2,2]
    放置第一个位置的数时,如果已经使用过第一个1了,那么他的所有组合和子集一定包含第二个1,所以去重逻辑就是同层不能出现相同的数
  • 对于一个顺序数组,通常直接与前一个数比较即可。
for i in range(index+1, n):if i==index+1 or nums[i]!=nums[i-1]:dfs(i,[],target)
  • 对于一个乱序数组,则需要用哈希表存储同层出现过的数。
hash = set()
for i in range(index+1, n):if i==index+1 or (nums[i] not in hash):hash.add(nums[i])dfs(i, [])
  1. 实际上上面的两段代码还蕴含了另一个去重,即不同层不能用同一个下标的数,所以这里索引时是从index+1开始

2、分割问题

我们定义[start:end] **(左闭右闭)**这段区间为分割出来的子串,对他进行条件判断。在python中对应的是s[start: end+1],end指向某个字符后面,表示切割到这个字符。start则为上一步的end+1。可以看下面这幅图,比较直观。理解了怎么分割字符串,剩下的就套回溯的模板就可以了。
在这里插入图片描述

    def partition(self, s: str) -> List[List[str]]:n = len(s)res = []def ishuiwen(s):return s==s[::-1]def dfs(start,end,stack):ss = s[start:end+1]if not ishuiwen(ss):returnstack.append(ss)if end == n-1:res.append(stack.copy())return for i in range(end+1,n):dfs(end+1, i, stack.copy())for i in range(n):dfs(0, i, [])return res

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

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

相关文章

Grafana Prometheus 通过JMX监控kafka 【2023最新方式】

第三方kafka exporter方案 目前网上关于使用Prometheus 监控kafka的大部分资料都是使用一个第三方的 kafka exporter,他的原理大概就是启动一个kafka客户端,获取kafka服务器的信息,然后提供一些metric接口供Prometheus使用,随意它…

【MySQL系列】-回表、覆盖索引真的懂吗

【MySQL系列】-回表、覆盖索引真的懂吗 文章目录 【MySQL系列】-回表、覆盖索引真的懂吗一、MYSQL索引结构1.1 索引的概念1.2 索引的特点1.3 索引的优点1.4 索引的缺点 二、B-Tree与BTree2.1 B-Tree2.2 BTree2.3 B-Tree 与BTree树的区别2.4 那么为什么InnoDB的主键最好要搞成有…

重发布 路由策略

[r4]ip ip_prefix 15 permit 192.168.3.0 24. 根据序号插入规则 [r4]undo ip-prefix aa index 15. 删除规则 [r4]ip ip-prefix aa permit 192.168.3.0 24 less- equal 28 抓取目标网段为3.0掩码长度为24到28的路由 [r4]ip ip-prefix aa permit 192.168.3.0 24 greate…

如何在安卓设备上安装并使用 ONLYOFFICE 文档

您可以使用文档安卓版应用,在移动设备上访问存在您 ONLYOFFICE 帐号中的文件。阅读本文,了解如何操作。 什么是 ONLYOFFICE 文档安卓版 适用于 Android 系统的 ONLYOFFICE 文档是一款全面的办公工具,您可以使用它,查看、创建、编…

MySQL— 基础语法大全及操作演示!!!(下)

MySQL—— 基础语法大全及操作演示(下)—— 持续更新 三、函数3.1 字符串函数3.2 数值函数3.3 日期函数3.4 流程函数 四、约束4.1 概述4.2 约束演示4.3 外键约束4.3.1 介绍4.3.2 语法4.3.3 删除/更新行为 五、多表查询5.1 多表关系5.1.1 一对多5.1.2 多对…

2022年09月 C/C++(二级)真题解析#中国电子学会#全国青少年软件编程等级考试

第1题&#xff1a;统计误差范围内的数 统计一个整数序列中与指定数字m误差范围小于等于X的数的个数。 时间限制&#xff1a;5000 内存限制&#xff1a;65536 输入 输入包含三行&#xff1a; 第一行为N&#xff0c;表示整数序列的长度(N < 100); 第二行为N个整数&#xff0c;…

数据结构之动态内存管理机制

目录 数据结构之动态内存管理机制 占用块和空闲块 系统的内存管理 可利用空间表 分配存储空间的方式 空间分配与回收过程产生的问题 边界标识法管理动态内存 分配算法 回收算法 伙伴系统管理动态内存 可利用空间表中结点构成 分配算法 回收算法 总结 无用单元收…

亚马逊新品如何快速上首页

将亚马逊新品快速上首页是许多卖家的目标&#xff0c;但要注意&#xff0c;这涉及到多种因素&#xff0c;包括产品质量、市场竞争、营销策略等。以下是一些可能帮助您的亚马逊新品快速上首页的方法&#xff1a; 1、优化产品信息&#xff1a;确保您的产品标题、描述和关键词字段…

网络层协议

网络层协议 IP协议基本概念协议头格式网段划分特殊的IP地址IP地址的数量限制私有IP地址和公网IP地址路由IP协议头格式后续 在复杂的网络环境中确定一个合适的路径 IP协议 承接上文&#xff0c;TCP协议并不会直接将数据传递给对方&#xff0c;而是交付给下一层协议&#xff0c;…

记一次前端直接上传图片到oss报错

前端直接上传图片到阿里云oss,相关过程官网和网上资料已经很详细&#xff0c;不做赘述。 但这个过程比较复杂&#xff0c;前后端对接过程中很容易出现报错&#xff0c;这里遇到了以下报错&#xff0c;不容易排查。 请求显示net::ERR_NAME_NOT_RESOLVED错误&#xff0c;catch输…

k8s node 误删除了如何自动创建 csr重新加入集群

worker node 节点当部署晚 kubelet、kube-proxy就会加入集群&#xff0c;如何加入呢&#xff0c; [rootkube-node01 ssl]# mv kubelet-client-2023-08-13-01-19-00.pem kubelet-client-current.pem kubelet.crt kubelet.key /tmp/kubelet [rootkube-node01 ssl]# systemctl da…