(回溯/组合)Leetcode77组合+39组合总和+216组合总和III

为什么不能暴力,因为不知道要循环多少次,如果长度为n,难道要循环n次么,回溯的本质还是暴力,但是是可以知道多少层的暴力

之所以要pop是因为回溯相当于一个树形结构,要pop进行第二个分支

剪枝:如果剩余的数字个数 < 还需要的个数,那这一支就没必要继续了(不可能凑满 k)。比如77

固定数量

77. 组合 - 力扣(LeetCode)

class Solution(object):def combine(self, n, k):""":type n: int:type k: int:rtype: List[List[int]]"""result=[]path=[]def backtracking(n,k,start):
#当你将 path 添加到 result 时,如果不使用 copy(),实际添加的是 path 的引用,就是添加的不是中间的状态if len(path)==k:result.append(path.copy())return i=startwhile i<=n and n-i+1>=k-len(path):path.append(i)backtracking(n,k,i+1)path.pop()i=i+1backtracking(n, k, 1)return result

可以重复选取+不固定数量+固定目标值

39. 组合总和 - 力扣(LeetCode)

class Solution:#与77组合区别在于树结构迭代时,不是start+1,因为start对应的数字还能再取def combinationSum(self, candidates: List[int], target: int) -> List[List[int]]:result=[]path=[]def backtracking(candidates,target,start):if(sum(path)>target):returnif(sum(path)==target):result.append(path.copy())returni=startwhile((i<len(candidates))):path.append(candidates[i])backtracking(candidates,target,i)path.pop()i=i+1backtracking(candidates,target,0)return result

固定数量+固定目标值

216. 组合总和 III - 力扣(LeetCode)

class Solution(object):def combinationSum3(self, k, n):""":type k: int:type n: int:rtype: List[List[int]]"""result=[]path=[]target=nnum=kstart=1end=9currentsum=0#这里可以定义一下currentsum,否则复杂度又上升了def backtracking(target,num,path,start,end,currentsum):#退出条件and不要忘记len(path)==num的条件if currentsum==target and len(path)==num:#result.append(path)不可以这样,加入的是引用result.append(path.copy())returnif currentsum>target:return#path.pop()回溯操作可以统一位置for i in range(start,end+1):path.append(i)currentsum+=i#num-=1 这是全局变量不需要变化backtracking(target,num,path,i+1,end,currentsum)path.pop()currentsum-=i#num+=1backtracking(target,num,path,start,end,currentsum)return result

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

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

相关文章

07 下载配置很完善的yum软件源

文章目录前言ping 测试网络排查原因排查虚拟机的虚拟网络是否开启检查net8虚拟网络和Centos 7的ip地址是否在一个局域网点击虚拟网络编辑器点击更改设置记录net8的虚拟网络地址ip a记录Centos 7的ip地址比较net8和Centos 7的ip地址是否在一个网段解决问题问题解决办法修改net8的…

SpringBoot中添加健康检查服务

问题 今天需要给一个Spring工程添加健康检查。 pom.xml <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId> </dependency>application.yml management:endpoints:web:e…

AI工具深度测评与选型指南 - AI工具测评框架及方法论

目录引言&#xff1a;AI工具爆发期的机遇与挑战一、从AI模型到AI工具&#xff1a;核心认知与生态解析1.1 DeepSeek&#xff1a;快速出圈的国产大模型代表1.2 大模型的核心能力与类型划分1.2.1 大模型的三层能力与“双系统”类比1.2.2 生成模型与推理模型的核心差异1.3 AI工具与…

Spring Cloud Alibaba快速入门02-Nacos(中)

文章目录实现注册中心-服务发现模拟掉线远程调用1.订单和商品模块的接口商品服务订单服务2.抽取实体类3.订单服务拿到需要调用服务的ip和端口负载均衡步骤1步骤2步骤3步骤4面试题&#xff1a;注册中心宕机&#xff0c;远程调用还能成功吗&#xff1f;1、调用过;远程调用不在依赖…

【Python】数据可视化之热力图

热力图&#xff08;Heatmap&#xff09;是一种通过颜色深浅来展示数据分布、密度和强度等信息的可视化图表。它通过对色块着色来反映数据特征&#xff0c;使用户能够直观地理解数据模式&#xff0c;发现规律&#xff0c;并作出决策。 目录 基本原理 sns.heatmap 代码实现 基…

如何 正确使用 nrm 工具 管理镜像源

目录 nrm 是啥&#xff1f; nrm 的安装 查看你当前已有的镜像源 怎么切换到目标镜像源 添加镜像源 删除镜像源 测试镜像源速度 nrm 是啥&#xff1f; 镜像源&#xff1a;可以理解为&#xff0c;你访问或下载某jar包或依赖的仓库。 nrm&#xff08;Node Registry Manag…

关于对逾期提醒的定时任务~改进完善

Spring Boot 中实现到期提醒任务的定时Job详解在金融或借贷系统中&#xff0c;到期提醒是常见的功能需求。通过定时任务&#xff0c;可以定期扫描即将到期的借款记录&#xff0c;并生成或更新提醒信息。本文基于提供的三个JobHandler类&#xff08;FarExpireRemindJob、MidExpi…

springboot配置请求日志

springboot配置请求日志 一般情况下&#xff0c;接口请求都需要日志记录&#xff0c;Java springboot中的日志记录相对复杂一点 经过实践&#xff0c;以下方案可行&#xff0c;记录一下完整过程 一、创建日志数据模型 创建实体类&#xff0c;也就是日志文件中要记录的数据格式 …

Redis(50) Redis哨兵如何与客户端进行交互?

Redis 哨兵&#xff08;Sentinel&#xff09;不仅负责监控和管理 Redis 主从复制集群的高可用性&#xff0c;还需要与客户端进行有效的交互来实现故障转移后的透明连接切换。下面详细探讨 Redis 哨兵如何与客户端进行交互&#xff0c;并结合代码示例加以说明。 哨兵与客户端的交…

【.Net技术栈梳理】04-核心框架与运行时(线程处理)

文章目录1. 线程管理1.1 线程的核心概念&#xff1a;System.Threading.Thread1.2 现代线程管理&#xff1a;System.Threading.Tasks.Task 和 Task Parallel Library (TPL)1.3 状态管理和异常处理1.4 协调任务&#xff1a;async/await 模式2. 线程间通信2.1 共享内存与竞态条件2…

(JVM)四种垃圾回收算法

在 JVM 中&#xff0c;垃圾回收&#xff08;GC&#xff09;是核心机制之一。为了提升性能与内存利用率&#xff0c;JVM 采用了多种垃圾回收算法。本文总结了 四种常见的 GC 算法&#xff0c;并结合其优缺点与应用场景进行说明。1. 标记-清除&#xff08;Mark-Sweep&#xff09;…

论文阅读:VGGT Visual Geometry Grounded Transformer

论文阅读&#xff1a;VGGT: Visual Geometry Grounded Transformer 今天介绍一篇 CVPR 2025 的 best paper&#xff0c;这篇文章是牛津大学的 VGG 团队的工作&#xff0c;主要围绕着 3D 视觉中的各种任务&#xff0c;这篇文章提出了一种多任务统一的架构&#xff0c;实现一次输…

python编程:一文掌握pypiserver的详细使用

更多内容请见: python3案例和总结-专栏介绍和目录 文章目录 一、 pypiserver 概述 1.1 pypiserver是什么? 1.2 核心特性 1.3 典型应用场景 1.4 pypiserver优缺点 二、 安装与基本使用 2.1 安装 pypiserver 2.2 快速启动(最简模式) 2.3 使用私有服务器安装包 2.4 向私有服务…

Git reset 回退版本

- 第 121 篇 - Date: 2025 - 09 - 06 Author: 郑龙浩&#xff08;仟墨&#xff09; 文章目录Git reset 回退版本1 介绍三种命令区别3 验证三种的区别3 如果不小心git reset --hard将「工作区」和「暂存区」中的内容删除&#xff0c;刚才的记录找不到了&#xff0c;怎么办呢&…

ARM 基础(2)

ARM内核工作模式及其切换条件用户模式(User Mode, usr) 权限最低&#xff0c;运行普通应用程序。只能通过异常被动切换到其他模式。快速中断模式(FIQ Mode, fiq) 处理高速外设中断&#xff0c;专用寄存器减少上下文保存时间&#xff0c;响应周期约4个时钟周期。触发条件为FIQ中…

Flutter 性能优化

Flutter 性能优化是一个系统性的工程&#xff0c;涉及多个层面。 一、性能分析工具&#xff08;Profiling Tools&#xff09; 在开始优化前&#xff0c;必须使用工具定位瓶颈。切忌盲目优化。 1. DevTools 性能视图 DevTools 性能视图 (Performance View) 作用&#xff1a;…

Spring事件监听机制(三)

为了理解EvenListener注解的底层原理&#xff0c;我们可以自己实现一个类似的注解模拟实现。1.定义MyListener注解Target({ElementType.METHOD})Retention(RetentionPolicy.RUNTIME)public interface MyListener {}2.注解使用Componentstatic class SmsService {private static…

基于Springboot + vue3实现的小区物业管理系统

项目描述本系统包含管理员和用户两个角色。管理员角色&#xff1a;用户管理&#xff1a;管理系统中所有用户的信息&#xff0c;包括添加、删除和修改用户。房屋信息管理&#xff1a;管理房屋信息&#xff0c;包括新增、查看、修改和删除房屋信息。车辆信息管理&#xff1a;管理…

交叉熵和KL散度

这个问题之前我也是傻傻分不清&#xff0c;决定整理一下&#xff0c;用更印象深刻的方式让人记住。核心联系&#xff1a;交叉熵 KL 散度 真实分布的熵 交叉熵作为 “绝对” 度量&#xff0c;会综合真实分布的熵&#xff08;固有难度&#xff09;与预测误差&#xff0c;直接体…

HTML 各种事件的使用说明书

HTML 各种事件的使用说明书 1. HTML 事件简介 HTML事件是浏览器或用户在网页上执行的动作或发生的事情。当这些事件发生时&#xff0c;可以通过JavaScript来响应和处理这些事件&#xff0c;从而实现网页的交互功能。事件处理是Web前端开发中实现动态交互的核心机制。 基本概…