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

【C++算法】模拟算法

替换所有的问号

  • 题目链接

替换所有的问号icon-default.png?t=O83Ahttps://leetcode.cn/problems/replace-all-s-to-avoid-consecutive-repeating-characters/description/

  • 算法原理

  • 代码步骤
class Solution {
public:
    string modifyString(string s) 
    {
        int n = s.size();
        for(int i = 0; i < n; i++)
        {
            if(s[i] == '?')
            {
                for(int j = 'a'; j <= 'z'; j++)
                {
                    if((i == 0 || s[i - 1] != j) && (i == n - 1 || s[i + 1] != j))
                    {
                        s[i] = j;
                        break;
                    }
                }
            }
        }
        return s;
    }
};

提莫攻击

  • 题目链接

提莫攻击icon-default.png?t=O83Ahttps://leetcode.cn/problems/teemo-attacking/description/

  • 算法原理

  • 代码步骤
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 += duration;
            else ret += x;
        }
        return ret + duration;
    }
};

Z字形变换

  • 题目链接

Z字型变换icon-default.png?t=O83Ahttps://leetcode.cn/problems/zigzag-conversion/description/

  • 算法原理

  • 代码步骤
class Solution {
public:
    string convert(string s, int numRows) 
    {
        if(numRows == 1)
        {
            return s;
        }
        int n = s.size();
        int d = 2 * numRows - 2;
        string ret;
        // 第一行
        for(int i = 0;i < n; i += d)
        {
            ret += s[i];
        }
        // 中间行
        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];
            }
        }
        // 最后一行
        for(int i = numRows - 1; i < n; i += d)
        {
            ret += s[i];
        }
        return ret;
    }
};

外观数列

  • 题目链接

外观数列icon-default.png?t=O83Ahttps://leetcode.cn/problems/count-and-say/description/

  • 算法原理

  • 代码步骤
class Solution {
public:
    string countAndSay(int n) 
    {
        string s = "1";
        for(int i = 2; i <= n; i++)
        {
            string tmp;
            for(int left = 0, right = 0; right < s.size(); )
            {
                while(right < s.size())
                {
                    if(s[left] != s[right]) break;
                    right++;
                }
                tmp += to_string(right - left) + s[left];
                left = right;
            }
            s = tmp;
        }
        return s;
    }
};

数青蛙

  • 题目链接

数青蛙icon-default.png?t=O83Ahttps://leetcode.cn/problems/minimum-number-of-frogs-croaking/description/

  • 算法原理

  • 代码步骤
class Solution {
public:
    int minNumberOfFrogs(string croakOfFrogs) 
    {
        string s = "croak";
        int n = s.size();
        vector<int> ret(n);
        // 哈希找下表
        unordered_map<char, int> hash;
        for(int i = 0; i < n; i++)
        {
            hash[s[i]] = i;
        }
        for(auto ch : croakOfFrogs)
        {
            if(ch == 'c')
            {
                if(ret[n - 1] != 0)
                {
                    ret[n - 1]--;
                    ret[0]++;
                }
                else
                {
                    ret[0]++;
                }
            }
            else
            {
                if(ret[hash[ch] - 1] != 0)
                {
                    ret[hash[ch] - 1]--;
                    ret[hash[ch]]++;
                }
                else
                {
                    return -1;
                }
            }
        }
        for(int i = 0; i < n - 1; i++)
        {
            if(ret[i] != 0) return -1;
        }
        return ret[n - 1];
    }
};

http://www.kler.cn/news/311031.html

相关文章:

  • 对 JavaScript 原型的理解
  • dll文件丢失怎么恢复?10种dll修复方法任你选,一次学会!
  • 算法题目复习(0909-0917)
  • Sqoop 数据迁移
  • git reflog
  • 机器学习:逻辑回归--过采样
  • 电巢科技携Ecosmos元宇宙产品亮相第25届中国光博会
  • Python实现 Socket.IO 的在线游戏场景
  • 51单片机-DS18B20(温度传感器)AT24C02(存储芯片) IIC通信-实验2-温度实时监测(可设置阈值)
  • 机器学习与深度学习之间的区别
  • 如何使用ORJSONResponse增强FastAPI应用性能:转换任意类型为JSON
  • Ubuntu 22.04上安装Python 3.10.x
  • Element走马灯组件循环播放两个页面是方向不一致
  • 网络安全实训九(域环境的创建及其信息收集)
  • 图像到图像的翻译
  • General OCR Theory: Towards OCR-2.0 via a Unified End-to-end Model
  • 用 ReactPHP 实现图片上传加速:让并发上传实现真正的高效
  • 软件测试工程师面试整理-操作系统与网络基础
  • 人工智能——猴子摘香蕉问题
  • centos中yum方式部署Jenkins
  • 【Linux取经之路】编译器gcc/g++的使用 调试器gdb的使用
  • OceanBase 运维管理工具 OCP 4.x 升级:聚焦高可用、易用性及可观测性
  • Vscode搭配latex简易教程
  • file的判断和获取,创建和删除
  • C++使用Socket编程实现一个简单的HTTP服务器
  • 掌握MySQL性能监控 · performance_schema 使用快速入门
  • Linux_bash的一些特殊符号
  • 聚观早报 | 极越07正式上市;宝骏云海正式上市
  • Laya2.x出包alipay小游戏
  • Java后端框架---Spring