优选算法——模拟


👇作者其它专栏

《数据结构与算法》《算法》《C++起始之路》


相关题解

1.1替换所有的问号

算法思路:

模拟。从前往后遍历整个字符串,找到问号后,用a~z的每一个字符取尝试替换即可。

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; } };

2.2提莫攻击

算法思路:

模拟+分情况讨论。

计算相邻两个时间点的差值:

        i.若差值大于等于中毒时间,说明上次中毒可以持续duration秒;

        ii.若差值小于中毒时间,说明此时发生了中毒叠加,那么上次的中毒只能持续两者的差值。

class Solution { public: int findPoisonedDuration(vector<int>& timeSeries, int duration) { int ret=0; for(int i=1;i<timeSeries.size();i++){ int x=timeSeries[i]-timeSeries[i-1]; if(x<=duration) ret+=x; else ret+=duration; } //别忘记,最后一次的中毒也需要加上一个duration return ret+duration; } };

2.3Z 字形变换

算法思路(模拟+找思路):

找规律,用row代替行数,row=4时画出的N字形如下:

可以发现,数据是以2row-2为一个周期进行规律变换的。将所有数替换成用周期来表示的变量:

第一行的数是:0,2row-2,4row-4;

第一行的数是:1,(2row-2)-1,(2row-2)+1,(4row-4)-1,(4row-4)+1;

第一行的数是:2,(2row-2)-2,(2row-2)+2,(4row-4)-2,(4row-4)+2;

第一行的数是:3,(2row-2)+3,(4row-4)+3。

第一行、第四行差为2row-2的等差数列;第二行、第三行除了第一个数取值为行数,每组下标为(2n-1,2n)的数围绕(2row-2)的倍数左右取值。

即首末行规律相同,中间行规律相同。

class Solution { public: string convert(string s, int numRows) { //处理边界情况 if(numRows==1) return s; string ret; int d=2*numRows-2,n=s.size(); //1.处理第一行 for(int i=0;i<n;i+=d) ret+=s[i]; //2.处理中间行 for(int i=1;i<numRows-1;i++){//中间的每一行 for(int j=i,k=d-i;j<n||k<n;j+=d,k+=d){ if(j<n) ret+=s[j]; if(k<n) ret+=s[k]; } } //3.处理最后一行 for(int i=numRows-1;i<n;i+=d){ ret+=s[i]; } return ret; } };

2.4外观数列

算法思路:

【外观数列】,就是依次统计字符串中连续且相同的字符的个数。

class Solution { public: string countAndSay(int n) { string s("1"); n--;//循环n-1次 while(n--){ string tmp; int left=0,right=0,len=s.size(); while(right<len){ while(s[left]==s[right]&&right<len) right++; tmp+=to_string(right-left)+s[left]; left=right; } s=tmp; } return s; } };

2.5数青蛙

算法思路:

模拟青蛙叫声,两种情况:

●只有连续的发出叫声才算成功。当遇到'r''o''a''k'这四个字符时,我们要去查看每个字符对应的前驱字符,有没有青蛙交出来。若有青蛙叫出来,那就让这个青蛙接下来喊出这个字符;若没有,返回-1;

●因为要返回青蛙的最小个数,即同一青蛙可能叫多次。当遇到'c'字符时,我们需要查看'k'字符有没有青蛙叫出来,若有就让此青蛙继续去叫'c';若没有,就重新添加青蛙。

class Solution { public: int minNumberOfFrogs(string croakOfFrogs) { string s="croak"; int n=s.size(); vector<int> hash(n);//数组模拟哈希表 unordered_map<char,int> index;//[x,x]表示这个字符的下标 for(int i=0;i<n;i++) index[s[i]]=i; for(auto ch:croakOfFrogs){ if(ch=='c'){ if(hash[n-1]>0) hash[n-1]--; hash[0]++; } else{ int i=index[ch]; if(hash[i-1]==0) return -1; hash[i-1]--;hash[i]++; } } for(int i=0;i<n-1;i++){ if(hash[i]!=0) return -1; } return hash[n-1]; } };

Read more

推荐12款AI免费一键生成PPT的网站【2026年最新】

推荐12款AI免费一键生成PPT的网站【2026年最新】

一、引言 你有没有过这种体验?为了一份 PPT 熬到深夜,字体、配色反复调整......结果成品还是显粗糙。如今 AI 早已融入各行各业,利用其快速做高质量 PPT,已成职场人、学生和教师的刚需。 但市面上 AI PPT 工具太多,有的求快、有的重设计,收费也乱,该怎么选才不踩坑? 经过对12大主流的AI生成PPT工具的深度对比,从大纲生成、模板内容到付费模式都一一做了详细的对比。不管你是赶工作周报、准备路演 PPT,还是做教学课件、毕业答辩稿,都能在这找到适配的选择。 二、PPT一键生成工具 1. 博思PPT 博思AIPPT是新一代AI智能PPT生成平台,通过深度学习技术实现从内容生成到视觉设计的全流程自动化。 传送入口:https://ai-to.cn/url?u=pptgo 推荐指数:⭐⭐⭐⭐ 示例:个人成就与挑战之年度回顾。 内容框架很贴合年度总结的需求,

By Ne0inhk
告别命令行“黑箱“!Open Claude Cowork:让AI代理可视化协作的革命性桌面应用

告别命令行“黑箱“!Open Claude Cowork:让AI代理可视化协作的革命性桌面应用

🔥 博主正在参加2025博客之星活动,您的每一票都是对技术分享的最大鼓励! 👉 点击为博主投票https://www.ZEEKLOG.net/blogstar2025/detail/070 感谢您的支持!让我们一起推动技术社区的发展! 引言:当Claude Code遇上"可视化"的灵魂拷问 相信每一位用过Claude Code的开发者都有过这样的体验: 你在终端里输入一条指令,然后……等待。屏幕上哗哗地刷着密密麻麻的文字,你瞪大眼睛试图跟上AI的思维,却发现自己仿佛在看一场没有字幕的外语电影。任务完成了吗?它现在在干什么?为什么突然停了?这些问题像三连击一样敲打着你的脑门。 Claude Code确实强大——它能写代码、管文件、跑命令,堪称程序员的"瑞士军刀"。但说真的,谁规定强大的工具就一定要长成"黑漆漆的终端"的样子呢? 今天要给大家介绍的Open Claude Cowork,就是这样一款"

By Ne0inhk
AI详情页智能生成工作流 一键生成电商全品类主图丨海报丨详情页

AI详情页智能生成工作流 一键生成电商全品类主图丨海报丨详情页

借助AI工作流,电商设计进入自动化时代。无需复杂操作,只需上传产品图片,填写关键信息,系统即可智能生成高品质的电商视觉素材,覆盖主图、海报、详情页等多种场景。 🧭 使 1. 上传产品图片 将需要设计的产品图上传至系统。AI会自动识别产品轮廓,进行智能抠图与背景替换。 2. 填写提示信息 根据工作流内置的文本框提示,输入基础信息: * 产品颜色:如“红色、蓝色、黑色” * 卖点 1:如“轻盈防水材质” * 卖点 2:如“可折叠收纳,便捷携带” * 产品信息介绍:包含材质、尺寸、功能亮点、细节参数等 3. 点击生成 一键启动AI生成流程,系统自动完成主图、场景海报与详情页的版式设计与视觉渲染。 4. 等待出图即可 仅需数十秒,即可获得完整的电商详情页内容,可直接上传至平台使用。 🚀 功能亮点 * 全自动化:

By Ne0inhk
Flutter for OpenHarmony:Flutter 三方库 mcp_dart 接入 AI 大模型上下文协议-智能代理引擎(适配鸿蒙 HarmonyOS Next ohos)

Flutter for OpenHarmony:Flutter 三方库 mcp_dart 接入 AI 大模型上下文协议-智能代理引擎(适配鸿蒙 HarmonyOS Next ohos)

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net。 Flutter for OpenHarmony:Flutter 三方库 mcp_dart 接入 AI 大模型上下文协议-智能代理引擎(适配鸿蒙 HarmonyOS Next ohos) 前言 随着 AI 大模型时代的到来,鸿蒙(OpenHarmony)应用正逐步向智能代理转型。mcp_dart 实现了模型上下文协议(MCP)的客户端封装,使得鸿蒙开发者能为 LLM 提供结构化的本地连接,让应用秒变深度集成的 AI Agent 助手。 一、核心价值 1.1 基础概念 MCP 协议像是一条高速公路,连接了 LLM 控制台和本地的数据孤岛。 发送请求 MCP

By Ne0inhk