C++ 模拟OJ
目录
1、1576. 替换所有的问号
2、 495. 提莫攻击
3、6. Z 字形变换
4、38. 外观数列
5、 1419. 数青蛙
1、1576. 替换所有的问号

思路:分情况讨论
- ?zs:左边没有元素,则仅需保证替换元素与右侧不相等;
- z?s:左右都有元素,则问号两侧都需要保证替换元素与其不相等;
- zs? :右边没有元素,则仅需保证替换元素与左侧不相等。
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、 495. 提莫攻击

思路:分情况讨论
相邻两次受到攻击的时间差与中毒持续时间进行比较,时间差大于等于中毒持续时间,则可以收到完整中毒时长,否则只能接受到时间差的中毒时长。
class Solution {
public:int findPoisonedDuration(vector<int>& timeSeries, int duration) {int sum = 0;for (int i = 1; i < timeSeries.size(); i++) {int x = timeSeries[i] - timeSeries[i - 1];if (x >= duration)sum += duration;elsesum += x;}return sum + duration;}
};
3、6. Z 字形变换

思路:画图找规律
示例解释
以 "PAYPALISHIRING" 为例,
numRows = 3时,周期d = 4。
- 第一行字符:
P(0),A(4),H(8),N(12)- 第二行字符:
A(1),P(3),L(5),S(7),I(9),I(11),G(13)- 第三行字符:
Y(2),I(6),R(10)按行读取这些字符后得到的新字符串是 "PAHNAPLSIIGYIR"。
特殊情况处理:如果
numRows为 1,则不需要进行任何变换,直接返回原字符串s。周期计算:整个 Z 字形排列的一个循环周期
d是2 * numRows - 2。这个周期是由于从上到下再到上的一个完整循环所包含的字符数量。例如,当numRows为 3 时,d为 4。第一行的字符添加:第一行的字符在原字符串中的位置就是周期
d的倍数,即0, d, 2d, ...。中间行的字符添加:
- 对于中间的每一行,每个周期内都有两个字符需要被添加到结果字符串中。第一个字符的位置是周期起始位置加行数,第二个字符的位置是周期结束位置减行数。
- 具体来说,对于行
k(从 0 开始计数),在周期i中,第一个字符的位置是i + k,第二个字符的位置是i + d - k。- 注意,每次添加第二个字符时需要检查其位置是否超出了原字符串的长度。
最后一行的字符添加:最后一行的字符在原字符串中的位置是周期起始位置加
numRows - 1,即numRows - 1, numRows - 1 + d, numRows - 1 + 2d, ...。返回结果:按照上述规则,将所有行的字符依次添加到结果字符串
ret中后,返回ret。
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 k = 1; k < numRows - 1; k++) {for (int i = k, j = d - k; i < n || j < n; i += d, j += d) {ret += s[i];if (j < n)ret += s[j];}}for (int i = numRows - 1; i < n; i += d) {ret += s[i];}return ret;}
};
4、38. 外观数列

思路:外层遍历数组元素,内层使用双指针寻找相同字符区间,区间相减就是相同字符的个数,区间左端点就是字符。
class Solution {
public:string countAndSay(int n) {string ret = "1";for (int i = 1; i < n; i++) {string tmp;int n = ret.size();for (int left = 0, right = 0; right < n;) {while (right < n && ret[left] == ret[right])right++;tmp += to_string(right - left) + ret[left];left = right;}ret = tmp;}return ret;}
};
5、 1419. 数青蛙

思路:
- 计数逻辑:通过追踪每个 "croak" 中字符的状态,确保蛙鸣声的顺序正确无误。
- 顺序检测:确保每个蛙鸣声都是按照正确的顺序 "croak" 发出的。
初始化变量:
s = "croak":定义了一个青蛙蛙鸣的顺序。n = s.size():蛙鸣声 "croak" 的长度,这里是5。hash:一个大小为5的向量(数组),用于追踪 "croak" 中每个字母的状态。index:一个哈希表(unordered_map),用于映射每个字符到它在 "croak" 中的索引。处理字符串:
- 遍历输入的
croakOfFrogs字符串中的每个字符。- 如果字符是 'c',表示一个新的蛙鸣声开始。如果在
hash的最后一个位置(对应 'k' 字符的位置)有计数,表示有一个青蛙完成了蛙鸣,可以开始新的蛙鸣,因此减少 'k' 的计数,并增加 'c' 的计数。- 对于 'r', 'o', 'a', 'k' 之外的 'c',需要检查前一个字符是否已经存在(即前一个状态的计数是否大于0)。如果是,将前一个字符的计数减1,当前字符的计数加1。如果不是,表示蛙鸣声的顺序被打断了,返回 -1。
验证和返回结果:
- 遍历
hash向量,检查 'c', 'r', 'o', 'a' 的计数是否都为0。如果这些位置的计数不为0,表示有蛙鸣声没有完成,返回 -1。- 如果所有 'c', 'r', 'o', 'a' 的计数都为0,最后返回 'k' 的计数,即为所需的最少青蛙数量。
class Solution {
public:int minNumberOfFrogs(string croakOfFrogs) {string s = "croak";int n = s.size();vector<int> hash(n);unordered_map<char, int> index;for (int i = 0; i < n; i++)index[s[i]] = i;for (auto c : croakOfFrogs) {if (c == 'c') {if (hash[n - 1] != 0)hash[n - 1]--;hash[0]++;} else {int i = index[c];if (hash[i - 1] == 0)return -1;hash[i - 1]--;hash[i]++;}}for (int i = 0; i < n - 1; i++) {if (hash[i] != 0)return -1;}return hash[n - 1];}
};相关文章:
C++ 模拟OJ
目录 1、1576. 替换所有的问号 2、 495. 提莫攻击 3、6. Z 字形变换 4、38. 外观数列 5、 1419. 数青蛙 1、1576. 替换所有的问号 思路:分情况讨论 ?zs:左边没有元素,则仅需保证替换元素与右侧不相等;z?s:左右都…...
MariaDB MaxScale实现mysql8读写分离
MaxScale 是干什么的? MaxScale是maridb开发的一个mysql数据中间件,其配置简单,能够实现读写分离,并且可以根据主从状态实现写库的自动切换,对多个从服务器能实现负载均衡。 MaxScale 实验环境 中间件192.168.142.13…...
代码随想录day11(1)字符串:反转字符串中的单词 (leetcode151)
题目要求:给定一个字符串,将其中单词顺序反转,且每个单词之间有且仅有一个空格。 思路:因为本题没有限制空间复杂度,所以首先想到的是用split直接分割单词,然后将单词倒叙相加。 但如果想让空间复杂度为O…...
PlantUML - 时序图
时序图主要内容 下面是一个简单的时序图,我们可以很容易并且美观的表达我们的交互流程,只需要在箭头的两边指定一个名字,加上描述即可: startuml bkloanapply -> bkloanapprove : request bkloanapprove --> bkloanapply :…...
VS Code 的粘性滚动预览 - 类似于 Excel 的冻结首行
VS Code 的粘性滚动预览 - 类似于 Excel 的冻结首行功能,即滚动 UI 显示当前源代码范围。便于在代码行数比较多的时候更好的知道自己所在的位置。粘性滚动UI 显示用户在滚动期间所处的范围,将显示编辑器顶部所在的类/接口/命名空间/函数/方法/构造函数&a…...
Java中的List
List集合的特有方法 方法介绍 方法名描述void add(int index,E element)在此集合中的指定位置插入指定的元素E remove(int index)删除指定索引处的元素,返回被删除的元素E set(int index,E element)修改指定索引处的元素,返回被修改的元素E get(int inde…...
Spring 框架模块深度解析:核心容器、数据访问、Web 层与其他关键模块
Spring 可能成为您的所有企业应用程序的一站式商店。但是,Spring 是模块化的,允许您挑选适用于您的模块,而无需引入其他模块。下面的部分提供了 Spring Framework 中所有可用模块的详细信息。Spring Framework 提供了大约20个模块,…...
前端配置开发环境,新电脑配置前端开发环境,Vue开发环境配置的详细过程(前端开发环境配置,电脑重置后配置前端开发环境)
简介:有时候,我们需要在新电脑 或者 电脑重置后,配置前端开发环境,具体都需要安装什么软件和插件,这里来记录一下(文章适合新手和小白,大佬可以带过)。 ✨前端开发环境,需…...
大模型(LLM)的量化技术Quantization原理学习
在自然语言处理领域,大型语言模型(LLM)在自然语言处理领域的应用越来越广泛。然而,随着模型规模的增大,计算和存储资源的需求也急剧增加。为了降低计算和存储开销,同时保持模型的性能,LLM大模型…...
2024.03.01作业
1. 基于UDP的TFTP文件传输 #include "test.h"#define SER_IP "192.168.1.104" #define SER_PORT 69 #define IP "192.168.191.128" #define PORT 9999enum mode {TFTP_READ 1,TFTP_WRITE 2,TFTP_DATA 3,TFTP_ACK 4,TFTP_ERR 5 };void get_…...
力扣hot100:42.接雨水
什么时候能用双指针? (1)对撞指针: ①两数和问题中可以使用双指针,先将两数和升序排序,可以发现规律,如果当前两数和大于target,则右指针向左走。 ②接雨水问题中,左边最…...
搜索回溯算法(DFS)1------递归
目录 简介: 递归问题解题的思路模板 例题1:汉诺塔 例题2:合并两个有序链表 例题3:反转链表 例题4:两两交换链表中的节点 例题5:Pow(x,n)-快速幂 结语: 简介&…...
workstation 用途
一 workstation 用途 强大的桌面虚拟化 允许创造多种操作系统可以不用重启就跨不同操作系统进行操作可以提供隔离的安全环境 连接到vsphere 可以远程登陆服务器管理物理主机和虚拟主机任何时间都可登陆提高虚拟机效率 为任何平台开发和测试 1)借助一台单一本地…...
【三维重建】【SLAM】SplaTAM:基于3D高斯的密集RGB-D SLAM(CVPR 2024)
题目:SplaTAM: Splat, Track & Map 3D Gaussians for Dense RGB-D SLAM 地址:spla-tam.github.io 机构:CMU(卡内基梅隆大学)、MIT(美国麻省理工) 总结:SplaTAM,一个新…...
Go Barrier栅栏
1. 简介 实现与pythonthreading.Barrier库类似的功能,多线程同时等待达到指定数量一起放行。 有待改进地方: wait方法没有支持context控制。 2. 代码 import ("context""golang.org/x/sync/semaphore""sync/atomic" …...
[蓝桥杯 2023 省 B] 冶炼金属
P9240 [蓝桥杯 2023 省 B] 冶炼金属 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 参考题解: #C3150——蓝桥杯2023年第十四届省赛真题-冶炼金属(分块)-Dotcpp编程社区 https://www.bilibili.com/video/BV1wc411x7KU/?spm_id_from333.1007.top_right_bar_windo…...
续Java的执行语句、方法--学习JavaEE的day07
day07 一、特殊的流程控制语句 break(day06) continue 1.理解: 作用于循环中,表示跳过循环体剩余的部分,进入到下一次循环 做实验: while(true){ System.out.println(“111”); System.out.println(“222”); if(true){ conti…...
公网IP怎么获取?
公网IP是网络中设备的唯一标识符,用于在Internet上进行通信和定位。对于普通用户来说,了解如何获取自己的公网IP是很有必要的,本文将介绍几种获取公网IP的方法。 方法一:通过路由器查询 大多数家庭和办公室使用的路由器都会有一个…...
连接未来:探索嵌入式系统的智能化之路
连接未来:探索嵌入式系统的智能化之路 嵌入式系统的智能化是连接未来的关键之一。以下是对这一主题的小点论述: 1. 嵌入式系统的定义和特点 嵌入式系统是一种特殊用途的计算机系统,通常嵌入在其他设备中,具有小巧、低功耗、实时…...
基于STM32制作的示波器(可对任意信号进行描点)
基于STM32制作的示波器(可对任意信号进行描点) 注意:用的屏幕是TFT-LCD(MCU 屏)正点原子同款屏幕 液晶显示器,即 Liquid Crystal Display,利用了液晶导电后透光性可变的特性,配合显…...
手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...
10-Oracle 23 ai Vector Search 概述和参数
一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...
初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...
CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)
漏洞概览 漏洞名称:Apache Flink REST API 任意文件读取漏洞CVE编号:CVE-2020-17519CVSS评分:7.5影响版本:Apache Flink 1.11.0、1.11.1、1.11.2修复版本:≥ 1.11.3 或 ≥ 1.12.0漏洞类型:路径遍历&#x…...
在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)
考察一般的三次多项式,以r为参数: p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]; 此多项式的根为: 尽管看起来这个多项式是特殊的,其实一般的三次多项式都是可以通过线性变换化为这个形式…...
给网站添加live2d看板娘
给网站添加live2d看板娘 参考文献: stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下,文章也主…...
