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


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


🎬 博主简介:


文章目录


前言:

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


39.替换所有问号

题目链接:

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

题目描述:

题目示例:

解法(模拟):

算法思路:

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

C++算法代码:

cpp 复制代码
class Solution {
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++算法代码:

代码一:

cpp 复制代码
class Solution {
public:
    int findPoisonedDuration(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;
}
};

代码二:

cpp 复制代码
class Solution {
public:
    int findPoisonedDuration(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;
}
};

算法总结&&笔记展示:

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


结尾:

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

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

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

相关推荐
唐墨1237 小时前
linux kernel 比较数据大小的宏定义
linux·算法
爱笑的k117 小时前
nano-vllm 源码剖析:千行 Python 手写离线推理引擎的调度、显存与并行时序
开发语言·python·vllm
拂拉氏7 小时前
【知识讲解-题目讲解】 统计满足K约束的子字符串数量2 (滑动窗口+前缀和+二分查找+分析)
算法·前缀和·二分查找·滑动窗口
X1A0RAN8 小时前
PPT 图片批量处理教程:导出全部幻灯片 · 提取全部素材
开发语言·javascript·powerpoint
熊猫钓鱼>_>9 小时前
普通用户视角的端侧智能体验手记【鸿蒙心迹】
开发语言·人工智能·华为·智能手机·性能优化·ai编程·harmonyos
瑞雪兆丰年兮9 小时前
JavaWeb-day13-SpringBootWeb事务管理&AOP
java·开发语言·springboot·javaweb·事务·web·aop
布莱克60511 小时前
Swift 常量详解:从 let 到编译期优化
服务器·开发语言·ssh·swift·常量·let
布莱克60511 小时前
Swift 可选类型(Optionals)详解:从原理到实战
开发语言·安全·ssh·swift·optional·可选类型
通信小呆呆12 小时前
电子战抗干扰技术:当“不被干扰”成为一种系统
算法·通信·mimo·isac
老歌老听老掉牙12 小时前
案例 7:二维 Rosenbrock 函数最小值(香蕉函数)
c++·pso