前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【数据结构与算法】模拟

【数据结构与算法】模拟

作者头像
风中的云彩
发布2025-05-28 08:35:41
发布2025-05-28 08:35:41
5400
代码可运行
举报
文章被收录于专栏:C/C++的自学之路C/C++的自学之路
运行总次数:0
代码可运行

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

前言

这是我自己刷算法题的第五篇博客总结。 上一期笔记是关于前缀和算法: 【数据结构与算法】前缀和-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/

代码语言:javascript
代码运行次数:0
运行
复制
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/

代码语言:javascript
代码运行次数:0
运行
复制
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/

代码语言:javascript
代码运行次数:0
运行
复制
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;
    }
};

4. leetcode-38题38. 外观数列 - 力扣(LeetCode)

https://leetcode.cn/problems/count-and-say/

代码语言:javascript
代码运行次数:0
运行
复制
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/

代码语言:javascript
代码运行次数:0
运行
复制
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;
    }
};

致谢

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-05-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 技巧
  • 例题
  • 致谢
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档