代码随想录 day27|day28|day29

回溯2

切割问题:是在每个节点判断是否是要剪枝收割元素。 startidx 是切割起点,i是本次切割终点

分割回文串
复原ip地址
非递减子序列
都是在树的节点依照题意判断,之后决定是否剪枝。
也就是都有if判断来剪枝 。
下面是非递减子序列。
在这里插入图片描述
下面是回文串
在这里插入图片描述
下面是复原ip地址
在这里插入图片描述

子集问题: 与组合问题的区别是在每个节点上收割结果 。

子集
子集去重:主要是树层去重。 判断条件是

if(used[i-1] == 0 && i> 0 && nums[i] == nums[i-1] ) 

在这里插入图片描述

[子集2] (https://leetcode.cn/problems/subsets-ii/description/)

组合问题

在每个节点收割元素 。 记住startidx 在每次递归时 要加1 。 这相当于for循环的i++ ;
这种回溯递归就是暴力枚举 。 不过是把代码简化了,并且把问题抽象为树。
组合总和
涉及到去重。 一般是树层元素去重。 树枝不去重。
如果发现重复的元素。直接剪枝(continue掉这次for循环)

 if( i >0   && candidates[i-1] == candidates[i] && 0 ==used[i-1] ){continue ; }

used[i-1] =0 确保这是在处理同一树层的元素。 因为used[i-1] = 1 的话表示处理的是树枝元素, 是从上一个树枝元素递归过来的元素。

组合总和II

排列问题:与组合问题不同的是,组合是同一个的组合,可能是不同的排列.要使用used数组,表示在本次树枝的遍历使用过的元素,使用过的就不使用了。 另外每次树枝都是从i==0 开始遍历。

全排列

  void backtracking(vector<int>& nums  , int k ){if(path.size() == k) // 递归边界 {res.push_back(path) ;return  ; }if(path.size() > k){return ; }for(int i = 0  ; i< nums.size(); ++ i){if( used[i] == 0 ){path.push_back(nums[i]) ;used[i] = 1 ; backtracking(nums, k ) ; used[i] = 0 ; path.pop_back() ; }}}

全排列去重也和组合去重一样都是把树层的元素 去重,通过剪枝去重

 if(i>0  && nums[i-1] == nums[i] && used[i-1] == 0 ){continue ; }

[全排列2](https://leetcode.cn/problems/permutations-ii/description/)

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

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

相关文章

关于stm32的软件复位

使用软件复位的目的&#xff1a; 软件复位并不会擦除存储器中的数据&#xff0c;它只是将处理器恢复到复位状态&#xff0c;即中断使能位被清除&#xff0c;系统寄存器被重置&#xff0c;但RAM和Flash存储器中的数据保持不变。 STM32软件复位(基于库文件V3.5) &#xff0c;对…

IDC发布《中国WAAP厂商技术能力评估,2024》研究报告

从市场规模来看&#xff0c;未来WAAP将逐步替代WAF&#xff0c;成为Web应用安全市场主流产品&#xff0c;同时也将涵盖API安全等其它市场。 随着云原生和微服务架构的兴起&#xff0c;Web业务的部署和管理方式发生了巨大变化。以APP应用和小程序为代表的移动应用使用量骤增&am…

使用眼精星票证识别系统识别国外护照的操作指南

你知道吗&#xff1f;在这个全球化的大潮中&#xff0c;处理和管理各类国际证件简直是头疼得要命&#xff01; 想象一下&#xff0c;你面前堆满了来自世界各地的护照&#xff0c;每个护照上的信息都要手动录入&#xff0c;这得花多少时间啊&#xff01;不过&#xff0c;别急&am…

vscode 离线下载指定版本插件和安装方法

1、背景 由于不同的vscode版本需要安装对应的插件版本&#xff0c;一般情况下&#xff0c;vscode版本会落后于vscode插件库提供的可以下载的插件版本&#xff0c;网页一般只会提供最新的插件下载版本&#xff0c;因此我们需要下载指定的版本需要采取一些措施。 2、获取需要安…

2.1.4 采用配置类与注解方式使用MyBatis

实战概述&#xff1a;采用配置类与注解方式使用MyBatis 创建MyBatis配置类 在net.huawei.mybatis.config包中创建MyBatisConfig类&#xff0c;用于配置MyBatis核心组件&#xff0c;包括数据源、事务工厂和环境设置。 配置数据源和事务 使用PooledDataSource配置MySQL数据库连接…

生命在于学习——Python人工智能原理(3.2)

三、深度学习 &#xff08;二&#xff09;人工神经网络 人工神经网络是模仿人类大脑神经系统工作原理所创建的数学模型&#xff0c;有并行的分布处理能力、高容错性和自我学习等特征。 1、感知器 感知器由Frank Roseblatt于1957年提出&#xff0c;是一种广泛使用的线性分类…

K8s种的service配置

什么是service 官方的解释是:   k8s中最小的管理单元是pod&#xff1b;而service是 将运行在一个或一组 Pod 上的网络应用程序公开为网络服务的方法;   Kubernetes 中 Service 的一个关键目标是让你无需修改现有应用以使用某种服务发现机制。 你可以在 Pod 集合中运行代码…

安防综合管理系统EasyCVR视频汇聚平台GA/T 1400协议中的关键消息交互示例

在当今的信息化时代&#xff0c;公共安全防范日益成为保障社会和谐稳定的关键。视频监控系统作为现代安全防范的重要手段&#xff0c;正不断在公安、交通、城市管理等领域发挥着越来越重要的作用。而GA/T 1400协议视图库&#xff0c;作为公安视频图像信息应用系统的标准&#x…

计算机网络 期末复习(谢希仁版本)第1章

大众熟知的三大网络&#xff1a;电信网络、有线电视网络、计算机网络。发展最快起到核心的是计算机网络。Internet是全球最大、最重要的计算机网络。互联网&#xff1a;流行最广、事实上的标准译名。互连网&#xff1a;把许多网络通过一些路由器连接在一起。与网络相连的计算机…

Python dateutil库:日期和时间处理的利器

更多Python学习内容&#xff1a;ipengtao.com Python的dateutil库是一个强大且灵活的日期和时间处理工具。它扩展了标准库中的datetime模块&#xff0c;提供了更多的功能和更高的灵活性。dateutil库特别适用于复杂的日期解析、日期计算、时区转换和重复事件处理。本文将详细介绍…

【全开源】在线投票系统(微信公众号+PC端)

&#x1f525;在线投票系统&#xff0c;让决策更民主更高效&#xff01;&#x1f680;​​ &#x1f308; 一、什么是在线投票系统&#xff1f; 在数字化时代&#xff0c;我们越来越多地依赖科技来辅助我们的工作与生活。在线投票系统&#xff0c;就是这样一个神奇的工具。简…

【云原生】Kubernetes----RBAC用户资源权限

目录 引言 一、Kubernetes安全机制概述 二、认证机制 &#xff08;一&#xff09;认证方式 1.HTTPS证书认证 1.1 证书颁发 1.2 config文件 1.3 认证类型 1.4 Service Account 1.4.1 作用 1.4.2 包含内容 1.4.3 与Secret的关系 2.Bearer Tokens 3.基本认证 三、鉴…

Python编程学习第一篇——制作一个小游戏休闲一下

到上期结束&#xff0c;我们已经学习了Python语言的基本数据结构&#xff0c;除了数值型没有介绍&#xff0c;数值型用的非常广&#xff0c;但也是最容易理解的&#xff0c;将在未来的学习中带大家直接接触和学习掌握。后续我们会开始学习这门语言的一些基础语法和编程技巧&…

【Python数据挖掘实战案例】机器学习LightGBM算法原理、特点、应用---基于鸢尾花iris数据集分类实战

一、引言 1、简要介绍数据挖掘的重要性和应用 在数字化时代&#xff0c;数据已经成为企业和社会决策的重要依据。数据挖掘作为一门交叉学科&#xff0c;结合了统计学、机器学习、数据库技术和可视化等多个领域的知识&#xff0c;旨在从海量数据中提取有价值的信息&#xff0c…

回归模型的算法性能评价

一、概述 在一般形式的回归问题中&#xff0c;会得到系列的预测值&#xff0c;它们与真实值&#xff08;ground truth&#xff09;的比较表征了模型的预测能力&#xff0c;为有效量化这种能力&#xff0c;常见的性能评价指标有平均绝对误差&#xff08;MAE&#xff09;、均方误…

【论文解读】针对机器人技术的大模型

1、简要介绍 大型语言模型&#xff08;LLM&#xff09;经历了显著的发展&#xff0c;并越来越多地跨各个领域集成。值得注意的是&#xff0c;在机器人任务规划领域&#xff0c;LLM利用其先进的推理和语言理解能力&#xff0c;基于自然语言指令制定精确和高效的行动规划。然而&a…

C基础与SDK调试方法

REVIEW 上次学习了一下软件使用流程zynq PS点灯-CSDN博客 本次学习一下C编程基础与调试方法 1. 硬件编程原理 小梅哥视频链接&#xff1a; 07_Xilinx嵌入式裸机硬件编程原理_哔哩哔哩_bilibili 对应的课程笔记&#xff1a;【zynq课程笔记】【裸机】【第7课 】【硬件编程原理…

使用双升压转换器扩展高转换比设计的功率范围

任何升压转换器设计都会对从输入到输出的电压升高程度存在实际限制。脉宽调制 (PWM) 控制器具有时序限制&#xff0c;限制了场效应晶体管 (FET) 的允许接通和断开时间。时序限制将有效地限制可实现的升压比&#xff0c;尽管这个缺点在使用电感器而不是变压器或耦合电感器作为其…

【Uniapp】uniapp微信小程序定义图片地址全局变量

错误写法&#xff1a; main.js Vue.prototype.$imgUrl 图片地址这么写之后 就发现压根不起作用&#xff1b;获取到的是undefined 正确写法&#xff1a; 返回函数&#xff0c;后面可以拼上OSS图片完整路径 Vue.prototype.$imgUrl (url) > {return ("https://地址…

SparkSql近期使用经验分享

背景 近期在公司使用了SparkSql重构一个由Java开发的ETL程序&#xff0c;因为Java模块不易于修改和部署&#xff0c;而由于SparkSql脚本是由Python开发&#xff0c;便于根据业务需求来开发维护&#xff0c;特别是不需要编译、打包部署。 技术理念 SparkSql是以Sql的形式去开…