【算法】模拟算法专题

server/2025/3/18 21:37:44/

文章目录

  • 1.替换所有的问号
    • 1.1 题目
    • 1.2 思路
    • 1.3 代码
  • 2. leetcode 495.提莫攻击
    • 2.1 题目
    • 2.2 思路
    • 2.3 代码
  • 3.leetcode 6. Z字形变换
    • 3.1 题目
    • 3.2 思路
    • 3.3 代码
  • 4. leetcode 38.外观数列
    • 4.1 题目
    • 4.2 思路
    • 4.3 代码
  • 5.leetcode 1419.数青蛙
    • 5.1 题目
    • 5.2 思路
    • 5.3 代码

1.替换所有的问号

1.1 题目

题目链接
在这里插入图片描述

1.2 思路

模拟算法其实就是按题意解题。
在这里插入图片描述

在这里插入图片描述

1.3 代码

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

2. leetcode 495.提莫攻击

2.1 题目

题目链接
在这里插入图片描述
在这里插入图片描述

2.2 思路

在这里插入图片描述

2.3 代码

class Solution {
public:int findPoisonedDuration(vector<int>& s, int d) {int ret = 0, n = s.size();for(int i = 0; i < n - 1; i++){int a = s[i + 1] - s[i];if(a >= d) ret += d;else ret += a;}ret += d;return ret;}
};

3.leetcode 6. Z字形变换

3.1 题目

题目链接
在这里插入图片描述
在这里插入图片描述

3.2 思路

在这里插入图片描述

在这里插入图片描述

3.3 代码

class Solution {
public:string convert(string s, int nu) {// 处理边界情况if(nu == 1) return s;int n = s.size();string ret;// 计算公差int d = 2 * nu - 2;//处理第一行for(int i = 0; i < n; i += d){ret += s[i];}//处理第k行for(int k = 1; k < nu - 1; k++){for(int i = k, ii = d - k; i < n || ii < n; i += d, ii += d){if(i < n) ret += s[i];if(ii < n) ret += s[ii];}}//处理第n行for(int i = nu - 1; i < n; i += d){ret += s[i];}return ret;}
};

4. leetcode 38.外观数列

4.1 题目

外观数列
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.2 思路

在这里插入图片描述

4.3 代码

class Solution {
public:string countAndSay(int n) {string ret = "1";for(int i = 1; i < n; i++){string tmp;int len = ret.size();for(int left = 0, right = 0; right < len; ){while(ret[left] == ret[right] && right < len) right++;tmp += to_string(right - left) + ret[left];left = right;}ret = tmp;}return ret;}
};

5.leetcode 1419.数青蛙

5.1 题目

题目链接
在这里插入图片描述

5.2 思路

在这里插入图片描述

在这里插入图片描述

5.3 代码

class Solution {
public:int minNumberOfFrogs(string nums) {string s = "croak";int n = s.size();vector<int> hash(n);//数组模拟哈希表unordered_map<char, int> ha;//哈希表存每个字符 及其对应下标for(int i = 0; i < n; i++){ha[s[i]] = i;// 计算每个字符的下标}for(int i = 0; i < nums.size(); i++){if(nums[i] == 'c'){if(hash[n - 1] != 0) hash[n - 1]--;hash[ha[nums[i]]]++;}else{if(hash[ha[nums[i]] - 1] <= 0) return -1;hash[ha[nums[i]] - 1]--;hash[ha[nums[i]]]++;}}for(int i = 0; i < n - 1; i++){if(hash[i] != 0) return -1;}return hash[n - 1];}
};

http://www.ppmy.cn/server/176058.html

相关文章

设计模式使用Java案例

代码设计要有可维护性&#xff0c;可复用性&#xff0c;可扩展性&#xff0c;灵活性&#xff0c;所有要使用设计模式进行灵活设计代码 创建型 简单工厂模式&#xff08;Simple Factory&#xff09; 简单工厂模式&#xff08;Simple Factory Pattern&#xff09;是一种创建型…

HTML 写一个计算器

<!DOCTYPE html> <html> <head><meta charsetutf-8/><title>Calculator</title><style id"jsbin-css">div, span {margin: 0;padding: 0;font-weight: bold;font: bold 16px Arial, sans-serif;/*禁止选中文本*/-moz-user…

基于springboot + vue 的实验室(预约)管理系统

基于springbootvue的实验室(预约)管理系统 springbootmybatisvuemysqlmavenidea 该系统的主要用户是在校的学生和教师&#xff0c;根据学生自主预约和学校多级审核的需求可将所有用户分为学生、教师和管理员 对于学生用户&#xff1a; &#xff08;1&#xff09;登录并查看实验…

Rust + WebAssembly 实现康威生命游戏

1. 设计思路 1.1 选择有限的世界 康威生命游戏的世界是 无限二维网格&#xff0c;但由于 计算机内存有限&#xff0c;我们可以选择三种有限宇宙方案&#xff1a; 动态扩展&#xff1a;仅存储“活跃区域”&#xff0c;按需扩展&#xff08;可能无限增长&#xff09;。固定大小…

Java Stream API 的使用

java8引入的java.util.stream.Stream流操作&#xff0c;使得访问和操作数组&#xff08;Array&#xff09;、集合&#xff08;Collection&#xff09;变得非常方便和优雅。 1、过滤元素和转化元素类型 private static void filterMapToInt() {List<String> list new Arr…

深度学习技巧

胡适的英语老师、出版家王云五先生是这样自学英语写作的&#xff1a;找一篇英文的名家佳作&#xff0c;熟读几次以后&#xff0c;把它翻译成中文&#xff1b;一星期之后&#xff0c;再将中文反过来翻译成英文&#xff0c;翻译期间绝不查阅英语原文&#xff1b;翻译好后再与原文…

CF 230B. T-primes

题目 time limit per test&#xff1a;2 seconds&#xff1b;memory limit per test&#xff1a;256 megabytes We know that prime numbers are positive integers that have exactly two distinct positive divisors. Similarly, well call a positive integer t Т-prime,…

时间有限,如何精确设计测试用例?5种关键方法

精确设计测试用例能够迅速识别并修复主要缺陷&#xff0c;确保产品质量&#xff0c;降低后期维护成本&#xff0c;并通过专注于核心功能来提升用户体验&#xff0c;为项目的成功奠定坚实基础。若未能精确设计测试用例&#xff0c;可能会导致关键功能测试不充分&#xff0c;使得…