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

【数据结构与算法】模拟

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

前言

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

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

【数据结构与算法】前缀和-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.lryc.cn/news/2387244.html

相关文章:

  • PyTorch入门-torchvision
  • LVS负载均衡群集技术深度解析
  • 18、Python字符串全解析:Unicode支持、三种创建方式与长度计算实战
  • 5月27日复盘-Transformer介绍
  • CSV数据处理全指南:从基础到实战
  • MyBatis-Plus一站式增强组件MyBatis-Plus-kit(更新2.0版本):零Controller也能生成API?
  • 实时数仓flick+clickhouse启动命令
  • 【Git】Commit Hash vs Change-Id
  • Netty学习专栏(六):深度解析Netty核心参数——从参数配置到生产级优化
  • 服务器磁盘按阵列划分为哪几类
  • 在WPF中添加动画背景
  • 【KWDB创作者计划】_KWDB分布式多模数据库智能交通应用——高并发时序处理与多模数据融合实践
  • Android 中的 ViewModel详解
  • Java集合框架与三层架构实战指南:从基础到企业级应用
  • 6个月Python学习计划 Day 2 - 条件判断、用户输入、格式化输出
  • 使用docker容器部署Elasticsearch和Kibana
  • 批量处理合并拆分pdf功能 OCR 准确率高 免费开源
  • Unity—lua基础语法
  • 目标检测 TaskAlignedAssigner 原理
  • Qt popup窗口半透明背景
  • 游戏:元梦之星游戏开发代码(谢苏)
  • TCP协议原理与Java编程实战:从连接建立到断开的完整解析
  • Linux的top命令使用
  • Spring Cloud Gateway 限流实践:基于 Redis 令牌桶算法的网关层流量治理
  • 可视化大屏实现全屏或非全屏
  • java8函数式接口(函数式接口的匿名实现类作为某些方法的入参)
  • linux自有服务
  • UniApp网页版集成海康视频播放器
  • Filter和Interceptor详解(一文了解执行阶段及其流程)
  • 鸿蒙仓颉开发语言实战教程:实现商城应用详情页