0x3f第二天滑动窗口

1.enumerate是python内置函数,和range都是内置函数,enumerate针对索引和对应元素都需要的时候,可以简化,就不用range了

for key,value in enumerate(nums):

这样就可以直接使用每一趟的key和value,不用写range,再把索引++

2.核心思想滑动窗口,不断枚举右边界,每次扩大右边界一次,就要把左边界缩到最小

左右边界都是从0开始取的,所以是同个起点起跑,右边界会比左边界走的快,

right 从 0 开始逐个前进,left 初始在 0 不动,直到 right 划到某个位置、窗口和满足条件,left 才会开始移动。


相当于往箱子里放球

right_value是往盒子里放新球,每枚举一个右端点,就加一个球

nums【left】是把刚放进去的某个球拿出来,缩窗时拿的球,一定是之前放进去的

temp 就是「盒子里当前所有球的数值的总和」,放球 / 拿球都会动态更新总和。

ans就是球的个数

困惑的点是

n = len(nums)

left = 0

ans = 0 #个数

temp = 0 #当前的总值

for right,right_value in enumerate(nums):

temp += right_value

while (temp -nums[left]) >= target: 错

left += 1

ans = min(ans,right - left + 1)

return ans

核心应该是

while temp>=target:

当出现目标,先记录,记录好,存根,放在ans了,就可以大胆的将left+1,就算不行,ans已经保存了行的时候的结果

ans = min(ans,right - left + 1)

temp - ...

left ++

出现的第二个问题
窗口里的处理顺序:

while temp >= target:

temp -= nums[left] x

ans = min(ans,right - left + 1) x

left += 1

粉色两行的顺序,应该是先记录此时的ans,再-temp

先统计有效窗口,再收缩,才是滑动窗口的标准逻辑;

出现的第三个问题,特殊情况的结,比如所有数加起来都不够,怎么办,此时判断条件是什么

ans == n+1 就说明没有进入过while循环,就是压根没出现过合理的窗口

1.思路完全和上面一致,只不过多了一个怎么把所有数都加上的问题

因为每次循环都把满足小于k的最大子数组找到了,最大子数组满足,那这个子数组中的拆开肯定也符合,就是怎么把他剥离开

我就没有想到

答案是 ans += right-left+1,排列组合问题

2.由于是乘法问题,就会引申到÷运算,本题是整数,所以//整除的性能最高

3.由于是乘法问题,初始值的赋值就要考虑0这个元素,因为任何数乘0都是0




1.首先引入一个函数Counter用来统计字符串的字符出现的次数,和三数之和的去重复性质不同,三数之和重复是排序之后,可能前后一样,我们要做到++来跳过重复的结果

但是最长字串的重复是设计某个元素出现次数,这个时候counter就有大用

用法 cnt = Counter()

再次调用的时候cnt[key],因为是字典子类的通用键访问语法 键----值

ctn['a'] +=1 翻译成人话就是:“把字符 'a' 在窗口内的出现次数加 1”

2.和上面两个题原理是一样的,for循环移动右边界,while循环移动左边界,while的条件根据题目设计

最终可以得到想要的滑动窗口,最终需要什么东西就是通过窗口的left和right来算

比如什么right - left +1 固定的值,不是最大值什么的

比如什么ans = (max,...)不断更新的最大值
核心代码:

while ctn[right_str] > 1:

ctn[s[left]] -= 1

left += 1

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

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

相关文章

CryptPad完整指南:如何搭建你的第一个端到端加密协作平台

CryptPad完整指南:如何搭建你的第一个端到端加密协作平台 【免费下载链接】cryptpad Collaborative office suite, end-to-end encrypted and open-source. 项目地址: https://gitcode.com/gh_mirrors/cr/cryptpad 在数字化办公时代,数据安全已成…

永磁同步电机新型滑模扰动观测器控制(NSMDO)与无差拍电流预测控制(DBCC)结合策略仿真研究

永磁同步电机新型滑模扰动观测器控制(NSMDO)+无差拍电流预测控制(DBCC) [1]速度环采用NSMDO [2]电流环采用DBCC 本系列仿真所使用的电机参数一致。永磁同步电机控制总绕不开抗干扰和动态响应这两个老问题,最…

Redis 零基础到进阶,类型概述,命令查询,key 操作命令,大小写和帮助命令,string,list,hash,set,笔记11-19

Redis 零基础到进阶,类型概述,命令查询,key 操作命令,大小写和帮助命令,string,list,hash,set,笔记11-19 一、参考资料 【尚硅谷Redis零基础到进阶,最强redis…

500S2R7BS100XT:2.2 pF高精度电容, 现货库存

型号介绍:今天我要向大家介绍的是 KYOCERA AVX 的一款电容器——500S2R7BS100XT。 它拥有低插入损耗和超高自谐振性能,能够在宽带频率范围内保持稳定的性能,是无线通信和商业雷达等应用的理想选择。同时,它的高绝缘电阻和低介质损…

【值得收藏】LangGraph智能工作流实践:邮件处理Agent从需求到完整实现指南

本文详细介绍了使用LangGraph构建智能邮件处理Agent的完整流程,包括业务需求分析、SOP设计、代码实现和演示。通过将复杂任务分解为清晰步骤,定义状态对象,构建节点和条件边,实现了能够自动分析邮件意图、处理问询或会议请求、生成…

冒泡排序是如何排序的,图解详细说明

冒泡排序 一、参考资料 【数据结构合集 - 冒泡排序(算法过程, 算法改进, 效率分析, 稳定性分析)】 https://www.bilibili.com/video/BV181421876R/?share_sourcecopy_web&vd_source855891859b2dc554eace9de3f28b4528 二、笔记总结

Linux上使用Docker安装MinIO指南 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

React性能优化实战:3步定位并解决90%的组件渲染问题

React性能优化实战:3步定位并解决90%的组件渲染问题 【免费下载链接】react-scan React Scan 主要功能是自动检测 React 应用中的性能问题。无需更改代码就能使用,能精准高亮需要优化的组件,还可通过脚本标签、npm、CLI 等多种方式使用&#…

第33课 鼠线的打开及关闭

系列文章目录 一、前言 可以把一整个PCB复制粘贴过来 单击右键,查找相似对象 鼠线在PCB设计中的作用:二、鼠线的打开方法 快捷键:N,点击即可 通过PCB设计软件(如Altium Designer、Cadence等)启用鼠线显示 在视图或显示…

对Ai元人文构想的阐释与延伸

对Ai元人文构想的阐释与延伸 岐金兰提出的“AI元人文构想”及其四重元认知跃迁,为我们思考人机共生的未来提供了极具启发性的框架。以下将结合相关理论与实践,对这一构想进行阐释与延伸。 第一跃迁:从“价值的本体论…

C盘如何清理?

C盘如何清理?your c: drive stores the windows system files, installed programs, and personal data, when it fills up, your computer can slow down, updates may fail, and programs might not run correctly, you do not need technical skills to free spa…

用AI构建导师评价系统:5分钟开发全流程

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个导师评价Web应用,使用React前端和Node.js后端。功能包括:1)学生登录/注册 2)匿名评价导师(1-5星评分文字评价) 3)导师查看统计报表(平均分、关键词云…

大模型转型全攻略:从零基础到高薪就业的完整路径(收藏必看)

本文详细介绍了进入大模型领域的完整转型路径,包括明确四大发展方向(开发、应用、研究、工程)、掌握编程与数学基础、深入学习Transformer架构与预训练技术、通过实践项目提升能力、参与开源社区、利用优质学习资源、构建个人品牌以及职业发展…

UMA模型终极指南:重新定义材料科学AI的革命性突破

UMA模型终极指南:重新定义材料科学AI的革命性突破 【免费下载链接】ocp Open Catalyst Projects library of machine learning methods for catalysis 项目地址: https://gitcode.com/GitHub_Trending/oc/ocp 想要在几分钟内完成传统需要数天的材料科学研究…

MCP集成RAG实战指南:零基础实现运维智能问答系统

文章介绍为MCP管理平台集成RAG的轻量级解决方案,采用"基础流水线增强检索"混合架构,嵌入运维知识检索和故障案例匹配能力,通过API非侵入式集成,解决运维问答、故障排查等场景痛点。方案使用ElasticsearchFAISS混合检索、…

5分钟用Python+YAML搭建原型系统

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 快速开发一个基于Python和YAML的待办事项管理原型系统。要求:1) 使用YAML文件存储任务数据(包含标题、描述、截止日期、优先级等字段)&#xff1…

8G显存多模态AI革命:MiniCPM-Llama3-V 2.5-int4量化版深度解析

你是否曾因显存不足而无法体验GPT-4V级别的多模态AI?🤔 现在,MiniCPM-Llama3-V 2.5-int4的出现彻底改变了这一局面,这款仅需8G显存的轻量化模型在消费级GPU上实现了突破性的多模态性能。🚀 【免费下载链接】MiniCPM-Ll…

Turn.js翻页效果深度解析:从入门到精通的完整实战指南

Turn.js翻页效果深度解析:从入门到精通的完整实战指南 【免费下载链接】turn.js The page flip effect for HTML5 项目地址: https://gitcode.com/gh_mirrors/tu/turn.js 在现代Web开发领域,Turn.js作为HTML5翻页效果的专业实现方案,正…

B站音频下载终极指南:用BiliFM解放你的耳朵

B站音频下载终极指南:用BiliFM解放你的耳朵 【免费下载链接】BiliFM 下载指定 B 站 UP 主全部或指定范围的音频,支持多种合集。A script to download all audios of the Bilibili uploader you love. 项目地址: https://gitcode.com/jingfelix/BiliFM …