【算法】模拟
个人主页 : zxctscl
如有转载请先通知
题目
- 前言
- 1. 1576. 替换所有的问号
- 1.1 分析
- 1.2 代码
- 2. 495. 提莫攻击
- 2.1 分析
- 2.2 代码
- 3. 6. Z 字形变换
- 3.1 分析
- 3.2 代码
- 4. 38. 外观数列
- 4.1 分析
- 4.2 代码
- 5. 1419. 数青蛙
- 5.1 分析
- 5.2 代码
前言
模拟算法就是根据题目所给的照葫芦画瓢。
考察的是代码能力。
步骤:1.模拟算法流程(一定得自己先过一遍流程)
2.把流程转化为代码
1. 1576. 替换所有的问号

1.1 分析
题目的意思很显而易见,遍历一遍字符串如果是?,就找一个小写字母来替换它,而它的前面一个字符和它不相同,它后面一个字符和它也不能相同。得处理一下边界情况,如果?在开始位置,就不用比较它前面位置,比较后面那个位置就行。同样在结尾位置的话,就比较前面的一个字符相不相等就行。
1.2 代码
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. 提莫攻击

2.1 分析
当前这个位置减去前面一个位置的差,如果大于等于中毒时间,那么就全部加上中毒时间;如果差小于中毒时间,那么就是加上这个差值。得注意最后一个值没有判断,最后的值还得再加上一个中毒时间才行。

2.2 代码
class Solution {
public:int findPoisonedDuration(vector<int>& timeSeries, int duration) {int n=timeSeries.size();int ret=0;for(int i=1;i<n;i++){ int t=timeSeries[i]-timeSeries[i-1];if(t>=duration) {ret+=duration;}else ret+=t;}return ret+duration;}
};
3. 6. Z 字形变换

3.1 分析
一、题目解析
按题目所述,像下面图片这样的就是Z字型。

二、算法原理
要想得到最后为Z字型输出的字符串,可以直接开一个矩阵直接先把字符一个一个放进去再一行一行输出。
但还可以用另外一个方式,就是找规律。
举个例子:把字符的下标都写到矩阵里面,就发现了规律。
第一行每间隔2n-2就出现一次,为了方便描述,就把间隔叫做公差d=2n-2,第一行只需要输出每次个d个数的字符就可以。
最后一行和第一行一样,也是间隔d个字符数。
来看中间几行,1和5到11和13中间间隔的也是d个数,那么直接一次性输出两个就行。

3.2 代码
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){if(i<n)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. 外观数列

4.1 分析
模拟题目的意思
找到连续相同的字符解释一下,可以利用双指针来进行,如果两个指针指向的位置字符相同就一直走,不一样就停下来,中间元素的个数就是指针的差值;然后让左边指针指向右边指针的位置,再重复上面的操作就可以了。
4.2 代码
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(right<len&&ret[left]==ret[right])right++;tmp+=to_string(right-left)+ret[left];left=right;}ret=tmp;}return ret;}
};
5. 1419. 数青蛙

5.1 分析
模拟
用一个哈希表时刻记录每一次字符出现的情况。如果青蛙叫了c时候,那么就用1记录一下有一个青蛙叫了c字符;遍历到r的时候看看前面有没有青蛙叫了c,有就让这个青蛙继续叫r,在哈希表了让c减减,r加加就行。当又遇到一个c时候,表示又有一个青蛙过来,然后继续遍历到o的时候,要看看哈希表前面有没有青蛙叫过r,有的话r减减,o加加,继续往后重复直到k。
但是题目要求青蛙数目最少,这里k中有数的时候,此时又有c时候,就从k里面搬一个青蛙来从c开始叫,k减减,c加加,重复上面过程。k里面的数存的就刚好是结果。
但是如果除了k里面还有非0元素,那么就返回-1。
如果在在哈希表中,在r位置之前没有c那么就返回-1:

总结,都得找前驱字符,如果前驱字符有,那么前驱字符减减,当前字符加加;没有就返回-1。
最后一个字符看看它是不是在哈希表里面存在,存在就是最后一个字符减减,当前字符加加;不存在就当前字符加加。

5.2 代码
class Solution
{
public:int minNumberOfFrogs(string croakOfFrogs){string t = "croak";int n = t.size();vector<int> hash(n); // ⽤数组来模拟哈希表unordered_map<char, int> index; //[x, x这个字符对应的下标]for (int i = 0; i < n; i++)index[t[i]] = i;for (auto ch : croakOfFrogs){if (ch == 'c'){if (hash[n - 1] != 0) hash[n - 1]--;hash[0]++;}else{int i = index[ch];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];}
};
相关文章:
【算法】模拟
个人主页 : zxctscl 如有转载请先通知 题目 前言1. 1576. 替换所有的问号1.1 分析1.2 代码 2. 495. 提莫攻击2.1 分析2.2 代码 3. 6. Z 字形变换3.1 分析3.2 代码 4. 38. 外观数列4.1 分析4.2 代码 5. 1419. 数青蛙5.1 分析5.2 代码 前言 模拟算法就是根据题目所给…...
电力综合自动化系统对电力储能技术的影响有哪些?
电力综合自动化系统对电力储能技术的影响主要体现在以下几个方面: 提高能源利用效率:电力综合自动化系统通过优化调度和能量管理,可以实现储能设备的有效利用,提高能源利用效率。在电力系统中,储能设备可以有效地平抑风…...
Compose UI 之 Card 卡片组件
Card Card 是用于显示带有圆角和可选阴影的矩形内容容器。它通常用于构建用户界面,并可以包含标题、文本、图像、按钮等元素,表示界面上的可交互元素,我们称它是 “卡片”。 Card 使用的一些经典的场景: 列表数据,例如 新闻列表,产品列表等。信息提示框,使用 Card 组件…...
ELK日志
...
WPF Pack
在WPF中,Pack URI(Uniform Resource Identifier)是一种特殊格式的统一资源标识符,用于定位和访问应用程序内部或外部的各种资源,如XAML文件、图像、样式、字体等。这种机制允许开发者以标准化、平台无关的方式引用和打…...
计算两个时间段的差值
计算两个时间段的差值 运行效果: 代码实现: #include<stdio.h>typedef struct {int h; // 时int m; // 分int s; // 秒 }Time;void fun(Time T[2], Time& diff) {int sum_s[2] { 0 }; for (int i 0; i < 1; i) { // 统一为秒数sum_s[…...
Element Plus 表单校验
原理 为 rules 属性传入约定的验证规则,并将 form-Item 的 prop 属性设置为需要验证的特殊键值:model和:rules中字段的名称需要一致 示例: <template><el-form ref"ruleFormRef" :model"ruleForm" :rules"rules&q…...
java实现TCP交互
服务器端 import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.PriorityQueue; import java.util.Scanner;public class TCP_Serv…...
学习云计算HCIE选择誉天有什么优势?
誉天云计算课程优势实战性强 课程注重实践操作,通过实际案例和实验操作,让学员深入了解云计算的应用场景和实际操作技能。课程内容全面 涵盖所有云计算涉及的IT基础知识、服务器、存储、网络等方面的基础知识,开源操作系统Linux,开…...
python之文件操作与管理
1、文件操作 通过open()操作,来创建文件对象,下面是open()函数语法如下: open(file,mode r,buffering -1 , encoding None ,errors None , newline None,closefd True,opener …...
大厂Java笔试题之对完全数的处理
题目:完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。 它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。 例如&…...
【Redis深度解析】揭秘Cluster(集群):原理、机制与实战优化
Redis Cluster是Redis官方提供的分布式解决方案,通过数据分片与节点间通信机制,实现了水平扩展、高可用与数据容灾。本文将深入剖析Redis Cluster的工作原理、核心机制,并结合实战经验分享优化策略,为您打造坚实可靠的Redis分布式…...
【JAVA基础篇教学】第六篇:Java异常处理
博主打算从0-1讲解下java基础教学,今天教学第五篇: Java异常处理。 异常处理是Java编程中重要的一部分,它允许开发人员在程序运行时检测和处理各种错误情况,以保证程序的稳定性和可靠性。在Java中,异常被表示为对象&am…...
【ubuntu20.04】安装GeographicLib
下载地址 GeographicLib: Installing GeographicLib 我们是ubuntu20.04 ,所以下载第一个 GeographicLib-2.3.tar.gz 接着跟着官方步骤安装,会出错!!!!马的 官方错误示例:tar xfpz Geographi…...
从0开始搭建基于VUE的前端项目(四) Vue-Router的使用与配置
版本 vue-router 3.6.5 (https://v3.router.vuejs.org/zh/) 安装 安装要指定版本,默认安装的4版本的 npm install vue-router3.6.5代码实现 在src目录下创建router目录 router/index.js import Vue from vue import Router from vue-routerVue.use(Router)con…...
力扣爆刷第117天之CodeTop100五连刷71-75
力扣爆刷第117天之CodeTop100五连刷71-75 文章目录 力扣爆刷第117天之CodeTop100五连刷71-75一、48. 旋转图像二、39. 组合总和三、113. 路径总和 II四、34. 在排序数组中查找元素的第一个和最后一个位置五、394. 字符串解码 一、48. 旋转图像 题目链接:https://le…...
ActiveMQ入门案例(queue模式和topic模式)
目录 前言:为什么使用消息中间件? 异步通信 缓冲 解耦 前提:安装并启动activemq 一、点对点(point to point, queue) 1.1 创建maven项目 1.2 Pom依赖 1.2 JmsProduce 消息生产者 1.3 JmsConsumer…...
2024年最新云服务器ECS租用报价费用表-阿里云
阿里云服务器租用价格表2024年最新,云服务器ECS经济型e实例2核2G、3M固定带宽99元一年,轻量应用服务器2核2G3M带宽轻量服务器一年61元,ECS u1服务器2核4G5M固定带宽199元一年,2核4G4M带宽轻量服务器一年165元12个月,2核…...
第四百五十四回
文章目录 1. 问题描述2. 优化方法2.1 缩小范围2.2 替代方法 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何获取AppBar的高度"相关的内容,本章回中将介绍关于MediaQuery的优化.闲话休提,让我们一起Talk Flutter吧。 1. 问题描述 我们在…...
蓝桥杯算法题:蓝桥骑士
题目描述 小明是蓝桥王国的骑士,他喜欢不断突破自我。 这天蓝桥国王给他安排了 N 个对手,他们的战力值分别为 a_1,a_2,…,a_n,且按顺序阻挡在小明的前方。对于这些对手小明可以选择挑战,也可以选择避战。 身为高傲的骑士ÿ…...
golang循环变量捕获问题
在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - 循环变量捕获问题。让我详细解释一下: 问题背景 看这个代码片段: fo…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...
STM32标准库-DMA直接存储器存取
文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…...
《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...
DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...
tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...
Reasoning over Uncertain Text by Generative Large Language Models
https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...
