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

【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.lryc.cn/news/441410.html

相关文章:

  • 模版进阶(template)
  • vue2与vue3的区别
  • 借助大模型将文档转换为视频
  • UE5安卓项目打包安装
  • MSF的使用学习
  • C++ —— 关于vector
  • 设计模式——对象池模式
  • 【VitualBox】VitualBox的网络模式+网络配置
  • 「Netmarble 小镇」活动来了:踏上穿越标志性世界的旅程!
  • MySQL 中的索引覆盖扫描:加速查询的秘密武器
  • 【机器学习】经典数据集鸢尾花的分类识别
  • Oracle从入门到放弃
  • 学习笔记 - 知识图谱的符号表示方法
  • 探索RESTful风格的网络请求:构建高效、可维护的API接口【后端 20】
  • 【深度智能】:迈向高级时代的人工智能全景指南
  • unity3d入门教程七
  • python植物大战僵尸项目源码【免费】
  • 目前人工智能时代,程序员如何保持核心竞争力?
  • golang学习笔记20——golang微服务负载均衡的问题与解决方案
  • 基于微信小程序的健身房管理系统
  • 【裸机装机系列】6.kali(ubuntu)-图形界面优化-让linux更适合你的使用习惯
  • 新的突破,如何让AI与人类对话变得“顺滑”:Moshi背后的黑科技
  • torch.embedding 报错 IndexError: index out of range in self
  • rocky9虚拟机配置双网卡的详细过程
  • 索引的介绍
  • Web后端服务平台解析漏洞与修复、文件包含漏洞详解
  • 树莓派介绍与可安装的操作系统
  • Qt常用控件——QTextEdit
  • docker-compose 部署 flink [支持pyflink]
  • C++中string类的模拟实现