当前位置: 首页 > 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/a/311031.html

相关文章:

  • 物理设备命名规则(Linux网络服务器 15)
  • 【前端】JavaScript高级教程:线程机制与事件机制
  • RAG综述:《A Comprehensive Survey of Retrieval-Augmented Generation (RAG)》
  • 【C++】详解RAII思想与智能指针
  • PHP爬虫快速获取京东商品详情(代码示例)
  • Linux——基础指令2 + 权限
  • 对 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