《算法闯关指南:优选算法--模拟》--39.替换所有问号,40.提莫攻击

《算法闯关指南:优选算法--模拟》--39.替换所有问号,40.提莫攻击
在这里插入图片描述

🔥草莓熊Lotso:个人主页
❄️个人专栏: 《C++知识分享》《Linux 入门到实践:零基础也能懂》
✨生活是默默的坚持,毅力是永久的享受!


🎬 博主简介:

在这里插入图片描述

文章目录


前言:

聚焦算法题实战,系统讲解三大核心板块:优选算法:剖析动态规划、二分法等高效策略,学会寻找“最优解”。 递归与回溯:掌握问题分解与状态回退,攻克组合、排列等难题。 贪心算法:理解“局部最优”到“全局最优”的思路,解决区间调度等问题 内容以题带点,讲解思路与代码实现,帮助大家快速提升代码能力。

39.替换所有问号

题目链接

1576. 替换所有的问号 - 力扣(LeetCode)

题目描述

在这里插入图片描述


题目示例

在这里插入图片描述

解法(模拟):

算法思路:

就是模拟这个过程就行。从前往后遍历整个字符串,找到问号之后,就用a~z的每一个字符去尝试替换即可。

C++算法代码:

classSolution{public: string modifyString(string s){int n=s.size();for(int i=0;i<n;i++)if(s[i]=='?')for(char ch='a';ch<='z';ch++)if((i==0||ch!=s[i-1])&&(i==n-1||ch!=s[i+1])){ s[i]=ch;break;}return s;}};

算法总结&&笔记展示:

笔记字有点丑,大家见谅:

在这里插入图片描述
在这里插入图片描述

40.提莫攻击

题目链接

495. 提莫攻击 - 力扣(LeetCode)

题目描述:

在这里插入图片描述

题目示例:

在这里插入图片描述

解法(模拟+分情况讨论):

算法思路:

模拟+分情况讨论。
计算相邻两个时间点的差值:

  • 如果差值大于等于中毒时间,说明上次中毒可以持续 duration 秒。
  • 如果差值小于中毒时间,那么上次的中毒只能持续两者的差值

还可以这样想,我们每次加上 min(duration,差值) 就行。

C++算法代码:

代码一:

classSolution{public:intfindPoisonedDuration(vector<int>& timeSeries,int duration){int n=timeSeries.size(),effect=0;for(int i=1;i<n;i++){int sub=timeSeries[i]-timeSeries[i-1];if(sub>=duration) effect+=duration;else effect+=sub;}return effect+duration;}};

代码二:

classSolution{public:intfindPoisonedDuration(vector<int>& timeSeries,int duration){int n=timeSeries.size(),effect=0;for(int i=1;i<n;i++){int sub=timeSeries[i]-timeSeries[i-1]; effect+=min(sub,duration);}//记得加最后一次的return effect+duration;}};

算法总结&&笔记展示:

笔记字有点丑,大家见谅:

在这里插入图片描述


在这里插入图片描述

结尾:

🍓 我是草莓熊 Lotso!若这篇技术干货帮你打通了学习中的卡点: 👀 【关注】跟我一起深耕技术领域,从基础到进阶,见证每一次成长 ❤️ 【点赞】让优质内容被更多人看见,让知识传递更有力量 ⭐ 【收藏】把核心知识点、实战技巧存好,需要时直接查、随时用 💬 【评论】分享你的经验或疑问(比如曾踩过的技术坑?),一起交流避坑 🗳️ 【投票】用你的选择助力社区内容方向,告诉大家哪个技术点最该重点拆解 技术之路难免有困惑,但同行的人会让前进更有方向~愿我们都能在自己专注的领域里,一步步靠近心中的技术目标! 

结语:本文分享了两道LeetCode算法题的解题思路与C++实现:替换所有问号(1576题):通过遍历字符串,对每个问号使用a-z字符尝试替换,确保不与前后字符重复。提莫攻击(495题):计算中毒总时间,通过比较相邻攻击时间差与中毒持续时间,取较小值累加。两题均采用模拟方法解决,代码简洁高效。笔记包含详细思路分析和可视化解题过程,适合算法学习者参考。

✨把这些内容吃透超牛的!放松下吧✨ʕ˘ᴥ˘ʔづきらど

Read more

Python异步编程基石:深入理解asyncio核心原理与实战

Python异步编程基石:深入理解asyncio核心原理与实战

摘要 本文深入剖析Python异步编程核心库asyncio的工作原理,从事件循环、协程、Future到Task的完整技术栈。通过真实性能对比数据、企业级案例和5个架构流程图,全面解析async/await底层机制。涵盖异步编程最佳实践、性能优化技巧和故障排查方案,帮助开发者掌握高并发程序设计精髓,提升I/O密集型应用性能数倍。 1 异步编程:为什么它是Python高性能的关键 在我13年的Python开发经验中,异步编程是性能优化的分水岭。记得曾经处理一个需要调用10个外部API的任务,同步版本需要20多秒,而改用异步后仅需2秒——这种10倍性能提升让我彻底认识到异步编程的价值。 1.1 同步 vs 异步:直观对比 想象你在餐厅点餐的场景: * 同步:点完第一个菜后站着等厨师做完,再点第二个菜,效率极低 * 异步:点完所有菜后找座位等待,厨师并行制作,服务员送餐时通知你 这就是异步编程的核心优势:避免不必要的等待,充分利用等待时间执行其他任务。 import time import asyncio # 同步版本:顺序执行,总耗时=各任务耗时之和 def

By Ne0inhk
Python 小工具实战:图片水印批量添加工具

Python 小工具实战:图片水印批量添加工具

Python 小工具实战:图片水印批量添加工具 Python 小工具实战:图片水印批量添加工具,本文详细介绍了使用 Python开发 给图片加水印的工具,该工具基于 Pillow 和 tkinter 库构建,可解决单图处理耗时、专业软件操作复杂的问题。工具支持单图与批量处理,用户能自定义水印文字、字体大小、透明度及颜色,还可选择 9 个常用水印位置或设置行列重复分布。新增的全屏水印模式可通过调整旋转角度与间距,生成铺满图片的版权保护水印,且界面采用卡片式布局,搭配浅灰背景与蓝色按钮,简洁美观,底部状态栏实时显示操作进度。文中提供完整可运行代码,并给出参数校验、字体兼容、常见报错解决等实用内容,新手按步骤即可上手,或者直接运行使用。 前言     Python作为一门简洁、易读、功能强大的编程语言,其基础语法是入门学习的核心。掌握好基础语法,能为后续的编程实践打下坚实的基础。本文将全面讲解Python3的基础语法知识,适合编程初学者系统学习。Python以其简洁优雅的语法和强大的通用性,成为当今最受欢迎的编程语言。本专栏旨在系统性地带你从零基础入门到精通Python核心。无论你是

By Ne0inhk
Python 轻量化环境管理利器 UV 入门与 Windows 下安装实战

Python 轻量化环境管理利器 UV 入门与 Windows 下安装实战

文章目录 * 一、UV是什么?解决什么问题? * 1.1 传统Python环境管理的三大痛点 * 痛点1:多工具碎片化操作,效率低下 * 痛点2:依赖冲突与环境隔离难题 * 痛点3:工具学习成本高,协作壁垒明显 * 1.2 UV如何解决?核心优势解析 * 优势1:一体化设计,命令行极简主义 * 优势2:智能环境管理,冲突预警与自动隔离 * 优势3:轻量化与高性能,适配现代开发节奏 * 优势4:渐进式迁移,兼容现有生态 * 1.3 目标用户与典型场景 * 二、Windows下UV安装实战 * 2.1 前置步骤:安装Visual C++ 2015-2022运行时 * 2.1.1 为什么必须安装? * 2.1.2 安装步骤

By Ne0inhk
2026!在Windows的Python中安装GDAL包(小白能成!)

2026!在Windows的Python中安装GDAL包(小白能成!)

最近更新 2026.02.10日,GDAL发布预告:新版本将支持更多的指令! 新版本,以修复bug为主,提高稳定性! 有朋友催我赶紧更新教程,我上次更新是年前的时候了,恰好是GDAL上一个版本出来的时间。 前言 很多大气,地理,环境,生态,遥感,城市空间规划等专业的朋友,在各种终端尝试 pip install GDAL 指令时,都会遇到各种各样奇怪的报错,无论如何都安不上。说实话这条路走不通,不怪你。 因为GDAL不是标准的python库,不能直接用pip指令,进行管理操作。 实际证明,这样走不通的,请你放弃幻想。跟着这个教程一步一步的操作,你大概率是可以成功的。我会尽可能的详细,一步一步,足够缓慢,足够让每个第一次安装的朋友都能够明白。 感谢北京师范大学地理学院的朋友提供的帮助,我将把这个方法详细记录,希望可以帮助到更多朋友。 个人电脑配置说明 OS:Windows 11 Enterprise(MacOS和Linux的朋友,建议拉到文末,

By Ne0inhk