当前位置: 首页 > news >正文

【数据结构与算法】模拟

  成熟不是为了走向复杂,而是为了抵达天真;不是为了变得深沉,而是为了保持清醒。

前言

  这是我自己刷算法题的第五篇博客总结。

  上一期笔记是关于前缀和算法:

【数据结构与算法】前缀和-CSDN博客https://blog.csdn.net/hsy1603914691/article/details/147953256?sharetype=blogdetail&sharerId=147953256&sharerefer=PC&sharesource=hsy1603914691&spm=1011.2480.3001.8118

技巧

1. 模拟题思路比较简单,先模拟算法流程再把流程转换成代码

2. 模拟题需要特别注意开始和结束,可能需要特殊处理

3. 模拟题的重点是找规律

例题 

1. leetcode-724题:    

1576. 替换所有的问号 - 力扣(LeetCode)https://leetcode.cn/problems/replace-all-s-to-avoid-consecutive-repeating-characters/description/

class Solution {
public:string modifyString(string s) {int cur=0;while(cur<s.size()){if(s[cur]=='?'){for(char replace='a';replace<='z';replace++){if(cur==0&&replace!=s[cur+1])s[cur]=replace;else if(cur==s.size()-1&&replace!=s[cur-1])s[cur]=replace;else if(cur!=0&&cur!=s.size()-1&&replace!=s[cur+1]&&replace!=s[cur-1])s[cur]=replace;else{}}}cur++;}return s;}
};

2. leetcode-495题:     

495. 提莫攻击 - 力扣(LeetCode)https://leetcode.cn/problems/teemo-attacking/description/

class Solution {
public:int findPoisonedDuration(vector<int>& timeSeries, int duration) {int cur=0,sum=0;while(cur<timeSeries.size()){if((cur!=timeSeries.size()-1&&timeSeries[cur]+duration<=timeSeries[cur+1])||(cur==timeSeries.size()-1)){sum+=duration;cur++;}else{sum+=timeSeries[cur+1]-timeSeries[cur];cur++;}}return sum;}
};

3. leetcode-6题:      

6. Z 字形变换 - 力扣(LeetCode)https://leetcode.cn/problems/zigzag-conversion/

class Solution {
public:string convert(string s, int numRows) {if(numRows==1)return s;string ret;int d=2*numRows-2,n=s.size();for(int i=0;i<n;i+=d)ret+=s[i];for(int k=1;k<numRows-1;k++){for(int i=k,j=d-k;i<n||j<n;i+=d,j+=d){if(i<n)ret+=s[i];if(j<n)ret+=s[j];}}for(int i=numRows-1;i<n;i+=d)ret+=s[i];return ret;}
};

4leetcode-38题:      

38. 外观数列 - 力扣(LeetCode)https://leetcode.cn/problems/count-and-say/

class Solution {
public:string countAndSay(int n) {string s="1";for(int i=1;i<n;i++){string temp;int left=0,right=0,count=0;while(right<s.size()){while(s[right]==s[left]&&right<s.size())right++;count=right-left;temp.push_back(count+'0');temp.push_back(s[left]);left=right;}s=temp;}return s;}
};

5. leetcode-1419题:     

1419. 数青蛙 - 力扣(LeetCode)https://leetcode.cn/problems/minimum-number-of-frogs-croaking/

class Solution {
public:int minNumberOfFrogs(string croakOfFrogs) {unordered_map<char,int> m;int right=0;while(right<croakOfFrogs.size()){if(croakOfFrogs[right]=='c'){if(m['k']==0)m['c']++;elsem['k']--,m['c']++;}else if(croakOfFrogs[right]=='r'){if(m['c']==0)return -1;elsem['c']--,m['r']++;}else if(croakOfFrogs[right]=='o'){if(m['r']==0)return -1;elsem['r']--, m['o']++;}else if(croakOfFrogs[right]=='a'){if(m['o']==0)return -1;elsem['o']--,m['a']++;}else if(croakOfFrogs[right]=='k'){if(m['a']==0)return -1;elsem['a']--,m['k']++;}elsereturn -1;right++;}if(m['c']==0&&m['r']==0&&m['o']==0&&m['a']==0)return m['k'];elsereturn -1;}
};

致谢

  感谢您花时间阅读这篇文章!如果您对本文有任何疑问、建议或是想要分享您的看法,请不要犹豫,在评论区留下您的宝贵意见。每一次互动都是我前进的动力,您的支持是我最大的鼓励。期待与您的交流,让我们共同成长,探索技术世界的无限可能!

 

http://www.xdnf.cn/news/684199.html

相关文章:

  • C52-二级指针
  • proteus8.4 安装包下载地址与安装教程
  • 开源项目asp本地编译安装教程(ubuntu操作系统)
  • 为什么MCP可以适配不同LLM
  • 《CF525E Anya 和立方体》
  • 人工智能文科能学吗?
  • java每日精进 5.27【分布式锁】
  • 经典排序算法合集(下)
  • 【调试】【原理理解】ldm 和 diffusers 库的区别
  • 自动驾驶中的博弈式交互规划:从理论到实践
  • droidcam ivcam 电脑访问不到地址解决办法 把网线从猫插到路由上
  • 1. 编程语言进化史与JavaScript
  • 数据结构期末模拟试卷
  • app获取相册权限是否意味着所有相片都可随时读取?
  • 智能防护实战:从攻击成本看企业安全降本增效
  • Jpa 删除之@Version注解的实体类无法删除的问题
  • 远程办公如何实现零监控?深度拆解“吱吱”不会被监控的通讯办公软件
  • 在RK3588上实现YOLOv8n高效推理:从模型优化到GPU加速后处理全解析
  • 电机控制杂谈(26)——电机驱动系统的编码器的测速噪声
  • RK3568DAYU开发板-驱动平台驱动案例--PWM
  • 【Linux】(1)—进程概念-①冯诺依曼体系结构
  • 想查看或修改 MinIO 桶的匿名访问权限(public/private/custom)
  • java基础学习(十八)
  • 大模型微调(面经总结)
  • 代码风格指南
  • 聚焦北京央美备考画室:探寻实力之巅
  • 码蹄集——圆周率II、三个非负整数
  • PCB设计自检表
  • 基于心理健康与数字行为数据的多维度分析
  • JAVA运算符详解