【数据结构与算法】模拟

news2025/5/29 8:57:06

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

前言

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

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

【数据结构与算法】前缀和-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']++;
                else
                    m['k']--,m['c']++;
            }
            else if(croakOfFrogs[right]=='r')
            {
                if(m['c']==0)
                    return -1;
                else
                    m['c']--,m['r']++;
            }
            else if(croakOfFrogs[right]=='o')
            {
                if(m['r']==0)
                    return -1;
                else
                    m['r']--, m['o']++;
            }
            else if(croakOfFrogs[right]=='a')
            {
                if(m['o']==0)
                    return -1;
                else
                    m['o']--,m['a']++;
            }
            else if(croakOfFrogs[right]=='k')
            {
                if(m['a']==0)
                    return -1;
                else
                    m['a']--,m['k']++;
            }
            else
                return -1;

            right++;
        }
        if(m['c']==0&&m['r']==0&&m['o']==0&&m['a']==0)
            return m['k'];
        else
            return -1;
    }
};

致谢

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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2387244.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PyTorch入门-torchvision

torchvision torchvision 是 PyTorch 的一个重要扩展库&#xff0c;专门针对计算机视觉任务设计。它提供了丰富的预训练模型、常用数据集、图像变换工具和计算机视觉组件&#xff0c;大大简化了视觉相关深度学习项目的开发流程。 我们可以在Pytorch的官网找到torchvision的文…

18、Python字符串全解析:Unicode支持、三种创建方式与长度计算实战

适合人群&#xff1a;零基础自学者 | 编程小白快速入门 阅读时长&#xff1a;约6分钟 文章目录 一、问题&#xff1a;Python的字符串是什么&#xff1f;1、例子1&#xff1a;多语言支持演示2、例子2&#xff1a;字符串不可变性验证3、答案&#xff1a;&#xff08;1&#xff09…

5月27日复盘-Transformer介绍

5月27日复盘 二、层归一化 层归一化&#xff0c;Layer Normalization。 Layer Normalizatioh和Batch Normalization都是用来规范化中间特征分布&#xff0c;稳定和加速神经网络训练的&#xff0c;但它们在处理方式、应用场景和结构上有本质区别。 1. 核心区别 特征BatchNo…

MyBatis-Plus一站式增强组件MyBatis-Plus-kit(更新2.0版本):零Controller也能生成API?

MyBatis-Plus-Kit &#x1f680; MyBatis-Plus-Kit 是基于MyBatis-Plus的增强组件&#xff0c;专注于提升开发效率&#xff0c;支持零侵入、即插即用的能力扩展。它聚焦于 免写 Controller、代码一键生成、通用响应封装 等核心场景&#xff0c;让您只需专注业务建模&#xff0…

实时数仓flick+clickhouse启动命令

1、启动zookeeper zk.sh start 2、启动DFS&#xff0c;Hadoop集群 start-dfs.sh 3、启动yarn start-yarn.sh 4、启动kafka 启动Kafka集群 bin/kafka-server-start.sh -daemon config/server.properties 查看Kafka topic 列表 bin/kafka-topics.sh --bootstrap-server local…

【Git】Commit Hash vs Change-Id

文章目录 1、Commit 号2、Change-Id 号3、区别与联系4、实际场景示例5、为什么需要两者&#xff1f;6、总结附录——Gerrit 在 Git 和代码审查工具&#xff08;如 Gerrit&#xff09;中&#xff0c;Commit 号&#xff08;Commit Hash&#xff09; 和 Change-Id 号 是两个不同的…

【KWDB创作者计划】_KWDB分布式多模数据库智能交通应用——高并发时序处理与多模数据融合实践

导读&#xff1a;本文主要探讨了基于KWDB的分布式多模数据库智能交通应用场景&#xff0c;进行了高并发时序处理与多模数据融合实践方向的思考。探索智慧交通领域的数据实时处理与存储资源利用方面的建设思路。 本文目录 一、智能交通数据架构革命   1.1 传统架构瓶颈  …

Java集合框架与三层架构实战指南:从基础到企业级应用

一、集合框架深度解析 1. List集合的武林争霸 ArrayList&#xff1a; 数组结构&#xff1a;内存连续&#xff0c;查询效率O(1) 扩容机制&#xff1a;默认扩容1.5倍&#xff08;源码示例&#xff09; private void grow(int minCapacity) {int oldCapacity elementData.len…

6个月Python学习计划 Day 2 - 条件判断、用户输入、格式化输出

6个月Python学习计划&#xff1a;从入门到AI实战&#xff08;前端开发者进阶指南&#xff09; Python 基础入门 & 开发环境搭建 &#x1f3af; 今日目标 学会使用 input() 获取用户输入掌握 if/else/elif 条件判断语法熟悉格式化输出方式&#xff1a;f-string、format() …

目标检测 TaskAlignedAssigner 原理

文章目录 TaskAlignedAssigner 原理和代码使用示例 TaskAlignedAssigner 原理和代码 原理主要是结合预测的分类分数和边界框与真实标注的信息&#xff0c;找出与真实目标最匹配的锚点&#xff0c;为这些锚点分配对应的目标标签、边界框和分数。 TaskAlignedAssigner 是目标检…

游戏:元梦之星游戏开发代码(谢苏)

《元梦之星》是一款轻松社交派对游戏,玩家们可以化身星宝,体验纯粹的游玩乐趣,收获简单的快乐。无论i人e人,都能轻松找到属于自己的社交方式。 《元梦之星》的快乐,可以是闯关夺冠时的激动&#xff0c;谁是狼人推理的巧妙&#xff0c;峡谷3V3打赢团战的爽感。也可以是星梦广场开…

TCP协议原理与Java编程实战:从连接建立到断开的完整解析

1.TCP协议核心&#xff1a;面向连接的可靠通信基石 TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09;是互联网的“可靠信使”&#xff0c;属于传输层协议&#xff0c;其核心在于面向连接和可靠传输。它通过严谨的握手机制与数据控制逻辑&am…

鸿蒙仓颉开发语言实战教程:实现商城应用详情页

昨天有朋友提到鸿蒙既然有了ArkTs开发语言&#xff0c;为什么还需要仓颉开发语言。其实这个不难理解&#xff0c;安卓有Java和Kotlin&#xff0c;iOS先后推出了Objective-C和Swift&#xff0c;鸿蒙有两种开发语言也就不奇怪了。而且仓颉是比ArkTs更加灵活的语言&#xff0c;虽然…

GitAny - 無需登入的 GitHub 最新倉庫檢索工具

地址&#xff1a;https://github.com/MartinxMax/gitany GitAny - 無需登入的 GitHub 專案搜尋工具 GitAny 是一款基於 Python 的工具&#xff0c;允許你在無需登入的情況下搜尋當天最新的 GitHub 專案。它支援模糊搜尋、條件篩選以及倉庫資料的視覺化分析。 安裝依賴 $ pip…

在飞牛nas系统上部署gitlab

在飞牛nas系统上部署gitlab需要使用docker进行部署&#xff0c;如下将介绍详细的部署流程。 文章目录 1. docker镜像2. 拉取镜像3. 运行容器4. 运行和访问gitlab5. 一些小配置5.1 url问题5.2 ssh端口5.3 其他配置 1. docker镜像 首先需要找一个gitlab的docker镜像地址&#x…

深入理解 Redis 哨兵模式

Redis 哨兵模式深度解析&#xff1a;从原理到实践的全流程指南 在分布式系统架构中&#xff0c;Redis 作为高性能的内存数据库&#xff0c;其哨兵模式&#xff08;Sentinel&#xff09;是保障服务高可用性的核心方案。本文将从基础概念、运行机制出发&#xff0c;结合具体配置…

[特殊字符]《Qt实战:基于QCustomPlot的装药燃面动态曲线绘制(附右键菜单/样式美化/完整源码)》

1、将qcustomplot.cpp qcustomplot.h放入工程目录下引入qcustomplot 2、代码 .h #if defined(_MSC_VER) #pragma execution_character_set(

力扣-最大连续一的个数

1.题目描述 2.题目链接 1004. 最大连续1的个数 III - 力扣&#xff08;LeetCode&#xff09; 3.代码解答 class Solution {public int longestOnes(int[] nums, int k) {int zero0,length0;for(int left0,right0;right<nums.length;right){if(nums[right]0){zero;}while…

无人机避障——深蓝学院浙大栅格地图以及ESDF地图内容

Occupancy Grid Map & Euclidean Signed Distance Field: 【注意】&#xff1a;目的是为了将有噪声的传感器收集起来&#xff0c;用于实时的建图。 Occupancy Grid Map&#xff1a; 概率栅格&#xff1a; 【注意】&#xff1a;由于传感器带有噪声&#xff0c;在实际中基于…

Postman基础操作

1.Postman是什么&#xff1f; Postman是接口测试的工具&#xff0c;简单来说它能模拟浏览器对服务器的某个接口发起请求并接收响应数据。 1.1 Postman工作原理 2.Postman发送请求 2.1 发送GET请求 我们知道GET请求是没用请求体的&#xff0c;所以我们需要将请求参数写在Param…