算法专题六:模拟

一.替换所有的问号

在这里插入图片描述

替换所有的问号

1.思路一

在这里插入图片描述

class Solution {
public:string modifyString(string s) {for(int i=0;i<s.size();i++){if(s[i] == '?'){for(char j = 'a' ; j<='z' ; j++){//1.注意数组越界if((i==0 || s[i-1] != j) && (i==s.size()-1 || s[i+1] != j)){s[i] = j;break;}}}}return s;}
};

2.GIF题目解析

请添加图片描述

二.提莫攻击

在这里插入图片描述
提莫攻击

1.思路一

在这里插入图片描述

class Solution {
public:int findPoisonedDuration(vector<int>& timeSeries, int duration) {int time = 0;for(int i=1;i<timeSeries.size();i++){int time_grep = timeSeries[i] - timeSeries[i-1];//1.时间超过if(time_grep >= duration){time += duration;}//2.时间没有超过else{time += time_grep;}}//3.最后一次攻击一定会走完!time += duration;return time;}
};

三.N字型变换

1.思路一:模拟

在这里插入图片描述

class Solution {
public:string convert(string& s, int numRows) {//0.只有一行if (numRows == 1)return s;//1.构建二维数组vector<string> vv(numRows);//2.字符排放int flag = 1;int a = 0;int b = numRows - 2;for (int i = 0; i < s.size(); i++){//2-1:从上往下if (flag == 1){if (a <= numRows - 1){vv[a] += s[i];a++;}if (a == numRows){if(numRows >= 3)a = 0, flag = -1;a = 0;}}//2-2:从下往上else{if (b >= 0){vv[b] += s[i];b--;}if (b == 0)b = numRows-2, flag = 1;}}//3.定义字符串类型进行+=string ret;for (int i = 0; i < numRows; i++) ret += vv[i];return ret;}
};

2.思路二:找规律进行优化

在这里插入图片描述

class Solution{
public:string convert(string s, int numRows) {//0.特殊情况判断:if (numRows == 1)return s;//1.计算公差int d = (2 * numRows) - 2;int n = s.size();//2.规律去模拟不需要创建额外的空间:string ret;for (int i = 0; i < numRows; i++){//1.第一行字符if (i == 0)for (int i_1 = 0; i_1 < n; i_1 += d) ret += s[i_1];//2.最后一行字符else if (i == numRows - 1)for (int i_n = numRows - 1; i_n < n; i_n += d) ret += s[i_n];//3.中间字符:左在右不在特殊情况elsefor (int i_k_left = i, i_k_right = d - i; (i_k_left < n) || (i_k_right < n); i_k_left += d, i_k_right += d){if(i_k_left < n )ret += s[i_k_left];if(i_k_right < n)ret += s[i_k_right];}}return ret;}
};//时间复杂度:O(n)
//空间复杂度:O(1)

四.外观数列

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

1.思路一:模拟

在这里插入图片描述

class Solution {
public:string countAndSay(int n) {//1.开始字符串:string ret("1");//2.内容的遍历:while (--n){int left = 0, right = 0;string s1;//3.字符串的遍历+数据更新for (left = 0, right = 0; right < ret.size(); right++){if (ret[right] != ret[left]){int n = (right - left ) * 10 + (int)(ret[left] - '0');//1.数据保存一下:s1 += to_string(n);//2.指针数值更新left = right;}}//4.数据都不去走for中的if产生的问题。int n = (right - left) * 10 + (int)(ret[left] - '0');s1 += to_string(n);ret = s1;}return ret;}
};

五.数青蛙

在这里插入图片描述
数青蛙

1.思路一:模拟+哈希记录数据

在这里插入图片描述

class Solution {
public:int minNumberOfFrogs(string croakOfFrogs) {//1.哈希表记录数据unordered_map<char, int> indx;vector<int> hash(5);//2.初始化hash的字符值?string s1("croak");//3.遍历一遍int n = s1.size();for (int i = 0; i < n; i++) indx[s1[i]] = i;//4.遍历字符串考虑青蛙!for (auto ch : croakOfFrogs){//1.第一个cif (ch == 'c'){//1.k有值if (hash[n - 1] >= 1)hash[0]++, hash[n - 1]--;//2.k没有值else if (hash[n - 1] == 0)hash[0]++;}//2.正常情况:else{int j = indx[ch];if (hash[j - 1] == 0) return -1;hash[j - 1]--, hash[j]++;}}//特殊情况:结束之后应该除了k位置hash是有数值其他hash中应该是没有数值的!for(int i=0;i<n-1;i++){if(hash[i]!=0)return -1;}return hash[n - 1];}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/598624.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Python学习】Python学习1

目录 【Python学习】Python学习1 1.前言2.Python安装3.PyCharm安装4.PyCharm插件推荐5.参考 文章所属专区 Python学习 1.前言 Python 是一种解释型、面向对象、动态数据类型的高级程序设计语言。Python 由 Guido van Rossum 于 1989 年底发明&#xff0c;第一个公开发行版发…

【C/C++】轻量级跨平台 开源串口库 CSerialPort

文章目录 1、简介2、支持的平台3、已经支持的功能4、Linux下使用5、使用vcpkg安装CSerialPort6、交叉编译7、效果图8、基于CSerialPort的应用8.1、CommMaster通信大师8.2、CommLite串口调试器 1、简介 Qt 的QSerialPort 已经是跨平台的解决方案&#xff0c;但Qt开发后端需要 Q…

[C#]C# OpenVINO部署yolov8图像分类模型

【官方框架地址】 https://github.com/ultralytics/ultralytics.git 【算法介绍】 YOLOv8 抛弃了前几代模型的 Anchor-Base。 YOLO 是一种基于图像全局信息进行预测的目标检测系统。自 2015 年 Joseph Redmon、Ali Farhadi 等人提出初代模型以来&#xff0c;领域内的研究者们…

【React系列】Hook(二)高级使用

本文来自#React系列教程&#xff1a;https://mp.weixin.qq.com/mp/appmsgalbum?__bizMzg5MDAzNzkwNA&actiongetalbum&album_id1566025152667107329) 一. Hook高级使用 1.1. useReducer 很多人看到useReducer的第一反应应该是redux的某个替代品&#xff0c;其实并不是…

解锁测试性能瓶颈:深度探讨JMeter分布式性能测试!

在做后端服务器性能测试中&#xff0c;我们会经常听到分布式。但你是否了解分布式呢&#xff1f;今天&#xff0c;我们就来给大家讲讲&#xff0c;在企业实战中&#xff0c;如何使用分布式进行性能测试&#xff0c;实战过程中&#xff0c;又有哪些地方要特别注意&#xff1f; 0…

什么是滚动码?什么工作原理?

一、什么是滚动码&#xff1f; 这里我们将简单了解什么是滚动码及其工作原理。首先简要描述其概念和操作。然后&#xff0c;我们将看一个示例来进一步阐明。最后&#xff0c;我们将研究滚动代码以防止攻击的原因。 滚动码&#xff0c;也称为跳跃码&#xff0c;是远程无钥匙进入…

两整数之和 -- 位运算

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 本题链接 力扣&#xff08;LeetCode&#xff09; 输入描述 输入两个要相加的数&#xff0c;a和b 输出描述 返回a和b的和&#xff0c;这里其实直接return ab; 直接就过了&#xff0c;但是人题目要求还是给点面子~ 算法…

【mars3d】批量关闭矢量数据的startFlicker()闪烁或者全部关闭startFlicker()

问题 1.graphic/entity/billboard怎么能够批量关闭startFlicker()闪烁或者 全部关闭startFlicker()呢&#xff1f; 相关链接 1.http://mars3d.cn/editor-vue.html?idgraphic/entity/billboard 2.http://mars3d.cn/apidoc.html#FlickerEntity 期望效果 1.graphic.stopFlic…

国图公考:2024年上半年中小学教师资格考试(笔试)报考须知

(一)信息填报时间&#xff1a;2024年1月12日9:00至1月15日16&#xff1a;00 (二)信息确认时间&#xff1a;2024年1月13日9:00至1月16日16&#xff1a;00 (三)网上缴费时间&#xff1a;2024年1月13日9:00至1月17日24&#xff1a;00

宝宝洗衣机哪个牌子质量好?好用的小型洗衣机推荐

当婴儿的到来&#xff0c;确实会给家庭带来许多变化&#xff0c;就好比如对于宝宝相关衣物的清洗需求。对于新生儿及婴幼儿的衣服&#xff0c;一般都要给予特殊的照顾与清洗&#xff0c;以保证不含细菌及过敏原。尤其是刚刚出生的婴儿&#xff0c;这时候宝宝们的皮肤很是幼嫩。…

python实现给定两个列表,“求同存异”

目录 问题描述&#xff1a; 代码实现&#xff1a; 问题描述&#xff1a; 给定两个列表&#xff0c;list1和list2。 python实现求list1和list中重复的元素&#xff0c;以及在list1中&#xff0c;不在list2的元素。 代码实现&#xff1a; def common_unique(pred_list, gold_l…

pyparamvalidate 项目背景和需求分析

目录 一、前置说明1、总体目录2、本节目标 二、项目背景三、需求分析三、后置说明1、要点小结2、下节准备 一、前置说明 1、总体目录 《 pyparamvalidate 参数校验器&#xff0c;从编码到发布全过程》 2、本节目标 阐述 pyparamvalidate 项目背景和需求分析。 二、项目背景…

由浅入深理解C#中的事件

目录 本文较长&#xff0c;给大家提供了目录&#xff0c;可以直接看自己感兴趣的部分。 前言有关事件的概念示例​ 简单示例​ 标准 .NET 事件模式​ 使用泛型版本的标准 .NET 事件模式​ 补充总结 参考前言 前面介绍了C#中的委托&#xff0c;事件的很多部分都与委托…

sql如何获取字段是数组中的数字【搬代码】

我们可以看到表中字段是一个数组怎么获取其中的数据呢&#xff1f; SELECT sim->>$[0] FROM fin_xxx如果使用左外链接&#xff0c;如下&#xff0c;其他连接时一样的 SELECT a.* FROM fin_aaaa a LEFT JOIN fin_xxx b ON b.sim_r->>$[0]a.corr WHERE b.tid20210 …

安全典型配置(六)配置IPSG限制非法主机访问内网案例(静态绑定)

相关文章学习&#xff1a; 安全典型配置&#xff08;一&#xff09;使用ACL限制FTP访问权限案例 安全典型配置&#xff08;二&#xff09;使用ACL限制用户在特定时间访问特定服务器的权限案例 安全典型配置&#xff08;三&#xff09;使用ACL禁止特定用户上网案例安全典型配置…

yolov8人脸识别-脸部关键点检测(代码+原理)

1. 人脸识别&#xff1a; Yolov8可用于人脸识别&#xff0c;它可以识别人脸的位置、大小和角度等信息&#xff0c;并对人脸进行精确的识别。通过使用Yolov8&#xff0c;可以实现高效准确的人脸识别&#xff0c;不仅可以应用于安防领域&#xff0c;也可以应用于人脸支付、人脸门…

x-cmd pkg | gitui - git 终端交互式命令行工具

目录 简介首次用户功能特点类似工具与竞品进一步探索 简介 gitui 由 Stephan D 于 2020 年使用 Rust 语言构建的 git 终端交互式命令行工具&#xff0c;旨在终端界面中便捷管理 git 存储库。 首次用户 使用 x gitui 即可自动下载并使用 在终端运行 eval "$(curl https:/…

open3d连线可视化

目录 写在前面准备代码运行结果参考完 写在前面 1、本文内容 open3d 2、平台/环境 windows10, visual studio 2019 通过cmake构建项目&#xff0c;跨平台通用&#xff1b;open3d 3、转载请注明出处&#xff1a; https://blog.csdn.net/qq_41102371/article/details/135407857…

呼叫 Mac 用户 | Navicat Premium 原生支持在搭载 Apple Silicon 芯片的电脑上使用

作为桌面端数据库管理开发软件&#xff0c;Navicat Premium 与 Navicat for MongoDB 16.3 (或更高版本) 已原生支持搭载 Apple Silicon 芯片的 Mac 电脑上使用。这是一次重要的技术改进&#xff0c;通过原生技术将大幅提升 Mac 用户在使用 Navicat 过程中的响应速度、流畅性以及…

Hex2Bin转换工具文档、Bootloader 、OTA 、STM32等MCU适用

说明&#xff1a;这个工具可以将 Hex 文件 转换为 Bin 格式文件&#xff0c;软件是按自己开发 STM32 OAT 功能需求开发的一款辅助 上位机软件。 有兴趣的朋友可留言探讨。 附加功能&#xff1a; 1.另外可以生成指定大小的bin 格式文件&#xff0c;文件多余的空余位置填充随机…