优选算法第六讲:模拟

server/2024/11/14 1:42:41/

优选算法第六讲:模拟

  • 1.替换所有的问号
  • 2.提莫攻击
  • 3.Z字形变换
  • 4.外观数列
  • 5.数青蛙

1.替换所有的问号

链接: link
在这里插入图片描述

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

2.提莫攻击

链接: link
在这里插入图片描述

class Solution {
public:int findPoisonedDuration(vector<int>& timeSeries, int duration) {int ret = 0;for(int left = 0, right = 1; right<timeSeries.size(); left++, right++){int cur = timeSeries[right]-timeSeries[left];if(cur < duration) ret += cur;else ret += duration;}return ret + duration;}
};

3.Z字形变换

链接: link
在这里插入图片描述

class Solution {
public:string convert(string s, int numRows) {if(numRows == 1) return s;string ret;//先处理第一行int d = 2*numRows-2;int n = s.size();for(int i = 0; i<n; i+=d) ret += s[i];//再处理中间的情况for(int i = 1; i<numRows-1; i++){for(int left = i, right = d-i; left < n || right<n; left+=d, right+=d){if(left < n) ret += s[left];if(right < n) ret += s[right];}}//最后处理最后一行for(int i = numRows-1; i<n; i+=d) ret += s[i];return ret;}
};

4.外观数列

链接: link
在这里插入图片描述

class Solution {
public:string countAndSay(int n) {string s = "1";while(--n){string ret;for(int left = 0, right = 0; right<s.size(); ){//right向后寻找第一个不同的元素while(right < s.size() && s[left] == s[right]) right++;int d = right-left;ret += to_string(d) + s[left];left = right;}s = ret;}return s;}
};

5.数青蛙

链接: link
在这里插入图片描述

class Solution {
public:int minNumberOfFrogs(string croakOfFrogs) {string s = "croak";int n = s.size();vector<int> hash(n);//使用数组替代哈希表//创建一个哈希表,用来保存s的下标unordered_map<char, int> index;for(int i = 0; i<n; i++)index[s[i]] = i;for(auto e : croakOfFrogs){if(e == 'c'){if(hash[n-1]) hash[n-1]--;hash[0]++;}else{int i = index[e];if(hash[i-1] == 0) return -1;hash[i-1]--, hash[i]++;}}for(int i = 0; i<hash.size()-1; i++)if(hash[i] != 0)return -1;return hash[n-1];}
};

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

相关文章

Webserver(5.4)项目整体

目录 http_conn.hhttp_conn.cpplocker.hmain.cppthreadpool.h编译并创建线程池 http_conn.h #ifndef HTTPCONNECTION_H #define HTTPCONNEVTION_H #include<sys/epoll.h> #include<stdio.h> #include<stdlib.h> #include<unistd.h> #include<signa…

数据分析-41-时间序列预测之机器学习方法XGBoost

文章目录 1 时间序列1.1 时间序列特点1.1.1 原始信号1.1.2 趋势1.1.3 季节性和周期性1.1.4 噪声1.2 时间序列预测方法1.2.1 统计方法1.2.2 机器学习方法1.2.3 深度学习方法2 XGBoost2.1 模拟数据2.2 生成滞后特征2.3 切分训练集和测试集2.4 封装专用格式2.5 模型训练和预测3 参…

ubuntu 安装 mongodb 笔记记录

https://www.mongodb.com/try/download/community 以上是下载地址 查看系统 (base) duyichengduyicheng-computer:~$ cat /proc/version Linux version 6.8.0-48-generic (builddlcy02-amd64-010) (x86_64-linux-gnu-gcc-13 (Ubuntu 13.2.0-23ubuntu4) 13.2.0, GNU ld (GNU …

ZABBIX API获取监控服务器OS层信息

Zabbix 是一款强大的开源监控解决方案,能够通过其 API 接口自动化管理和获取监控数据。在这篇文章中,详细讲解如何通过 Zabbix API 批量获取服务器的系统名称、IP 地址及操作系统版本信息,并将数据保存到 CSV 文件中。本文适合对 Python 编程和 Zabbix 监控系统有一定基础的…

CelebV-Text——从文本生成人脸视频的数据集

概述 近年来&#xff0c;生成模型在根据文本生成和编辑视频方面受到了广泛关注。然而&#xff0c;由于缺乏合适的数据集&#xff0c;生成人脸视频领域仍然是一个挑战。特别是&#xff0c;生成的视频帧质量较低&#xff0c;与输入文本的相关性较弱。在本文中&#xff0c;我们通…

《Python使用sqlite3数据库》

《Python使用sqlite3数据库》 1、连接数据库2、创建游标3、执行SQL语句4、提交更改5、查询数据6、关闭连接 Python可以使用多种数据库&#xff0c;以下是一般步骤和示例&#xff1a; 1、连接数据库 首先要安装对应的数据库驱动。如使用MySQL数据库&#xff0c;要安装pymysql库…

如何安装和配置JDK17

教程目录 零、引言1、新特性概览2、性能优化3、安全性增强4、其他改进5、总结 一、下载安装二、环境配置三、测试验证 零、引言 JDK 17&#xff08;Java Development Kit 17&#xff09;是Java平台的一个重要版本&#xff0c;它带来了许多新特性和改进&#xff0c;进一步提升了…

大数据新视界 -- 大数据大厂之 Impala 性能优化:应对海量复杂数据的挑战(上)(7/30)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…