算法笔记(四)——模拟

算法笔记(四)——模拟

文章目录

  • 算法笔记(四)——模拟
  • 替换所有的问号
  • 提莫攻击
  • Z字形变换
  • 外观数列
  • 数青蛙

模拟算法就是根据题目的要求,题目让干神马就做神马,一步一步来

替换所有的问号

题目:替换所有的问号

在这里插入图片描述

思路

  • 从左到右遍历整个字符串,找到问号之后,就⽤ a ~ z 的每⼀个字符去尝试替换

C++代码

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 || ch != s[i - 1]) // 和前面相不相等 && (i == s.size() - 1 || ch != s[i + 1])) // 和后面相不相等{s[i] = ch;break;}}}}return s;}
};

提莫攻击

题目:提莫攻击

在这里插入图片描述
思路

  • 遍历数组当前位置减去前一个位置, 如果差值
  • 大于中毒时长,就加上中毒时间
  • 如果小于,就加上差值
  • 最后,加上最后一次中毒时间

C++代码

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

Z字形变换

题目:Z字形变换

在这里插入图片描述
思路

  • 如果横着看,就是数学法,找通项公式;
  • 如果竖着看,在按列读取的时候,为每一行维护一个字符串,读到哪一行就在后面追加字符
  • 设置两个边界,在增长到或者减小到某个边界的时候,读取行的顺序进行反转,不断地从上到下,再从下到上读取,直到取完所有字串
class Solution 
{
public:string convert(string s, int numRows) {if(numRows == 1) return s;vector<string> rows(numRows);int i = 0;int flag = -1;for(auto ch : s){rows[i].push_back(ch);if(i == 0 || i == numRows - 1){flag = -flag;}i += flag;}string res;for(auto x : rows) {res += x;}return res;}
};

外观数列

题目:外观数列

在这里插入图片描述
思路
模拟 + 双指针,模拟实现
C++

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 l = 0, r = 0; r < len; ){while(r < len && ret[l] == ret[r]) r++;tmp += to_string(r - l) + ret[l];l = r;}ret = tmp;}return ret;}
};

数青蛙

题目:数青蛙

在这里插入图片描述

思路

  • 模拟将c、r、o、a、k存入哈希表;
  • 遍历字符串,
  • 如果遇到c,找最后一个字符,即k是否在哈希表中存在,若存在最后一个字符,即k--,当前字符,即c++
  • 遇到其他字符,若其前驱存在,前驱个数--,当前++;若不存在,返回-1

C++代码
纯暴力

class Solution 
{
public:int minNumberOfFrogs(string croakOfFrogs) {int hash[5]={0};int n = croakOfFrogs.size();for(int i = 0;i < n;i++){if(croakOfFrogs[i] == 'c'){if(hash[4] > 0){hash[4]--;hash[0]++;}else hash[0]++;}else if(croakOfFrogs[i] == 'r'){if(hash[0] > 0){hash[0]--;hash[1]++;}else return -1;}else if(croakOfFrogs[i] == 'o'){if(hash[1]>0){hash[1]--;hash[2]++;}else return -1;}else if(croakOfFrogs[i] == 'a'){if(hash[2] > 0){hash[2]--;hash[3]++;}else return -1;}else if(croakOfFrogs[i] == 'k'){if(hash[3] > 0){hash[3]--;hash[4]++;}else return -1;}else return -1;}if(hash[0]||hash[1]||hash[2]||hash[3]) return -1;return hash[4]; }
};

借助unordered_map

class Solution 
{
public:int minNumberOfFrogs(string croakOfFrogs) {string t = "croak";int n = t.size();vector<int> hash(n);unordered_map<char, int> mp = {{'c', 0}, {'r', 1}, {'o', 2}, {'a', 3}, {'k', 4}};for(auto ch : croakOfFrogs){if(ch == 'c'){if(hash[n - 1] != 0) hash[n - 1]--;hash[0]++;  }else{int i = mp[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];}
};

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

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

相关文章

Tableau数据可视化入门

目录 一、实验名称 二、实验目的 三、实验原理 四、实验环境 五、实验步骤 1、Tableau界面引导 2、数据来源 3、数据预处理操作 4、制作中国各个地区的利润图表 4.1条形图 4.2气泡图 5、制作填充地球图 一、实验名称&#xff1a; 实验一&#xff1a;Tableau数据可…

探索 GraphRAG:从存储到查询,深入解析 NebulaGraph 与传统 SQL 的对比

近年来&#xff0c;图数据库逐渐成为大数据和人工智能领域的热议话题。特别是随着 GraphRAG 技术的火爆&#xff0c;如何高效存储和查询大规模图数据成为很多开发者关心的问题。出于好奇&#xff0c;我最近尝试了 GraphRAG 并研究其存储结构&#xff0c;因此决定进一步探索图数…

初识算法 · 双指针(2)

目录 前言&#xff1a; 盛最多水的容器 题目解析&#xff1a; 算法原理&#xff1a; 算法编写&#xff1a; 有效三角形的个数 题目解析&#xff1a; 算法原理&#xff1a; 算法编写&#xff1a; 前言&#xff1a; 本文介绍两个题目&#xff0c;盛最多水的容器和有效三…

C语言复习概要(三)

本文 使用Visual Studio进行调试的技巧与函数递归详解1. 引言2. Visual Studio 调试技巧2.1. 断点的使用2.1.1. 基本断点示例&#xff1a;设置基本断点 2.1.2. 条件断点示例&#xff1a;条件断点 2.2. 逐步执行代码示例&#xff1a;逐步执行代码 2.3. 监视变量使用监视窗口 2.4…

第十一章 缓存

目录 一、什么是缓存 二、缓存更新策略 2.1. 缓存主动更新策略 2.1.1. Cache Aside模式&#xff08;主流&#xff09;‌ 2.1.2. Read/Write Through模式‌ 2.1‌.3. Write Behind模式‌ 2.1.4. 总结 三、缓存穿透 四、缓存雪崩 五、缓存击穿 本文中的图片内容部分来源…

训练验证器解决数学应用题

人工智能咨询培训老师叶梓 转载标明出处 数学问题解决不仅要求模型能够理解问题的语言表述&#xff0c;还要求其能够准确地执行一系列数学运算&#xff0c;每一步的准确性都至关重要。遗憾的是&#xff0c;现有的语言模型在这一领域的性能远远未能达到人类的水平&#xff0c;它…

【Python|接口自动化测试】使用requests发送http请求时添加headers

文章目录 1.前言2.HTTP请求头的作用3.在不添加headers时4.反爬虫是什么&#xff1f;5.在请求时添加headers 1.前言 本篇文章主要讲解如何使用requests请求时添加headers&#xff0c;为什么要加headers呢&#xff1f;是因为有些接口不添加headers时&#xff0c;请求会失败。 2…

Windows上 minGW64 编译 libssh2库

下载libssh2库:https://libssh2.org/download/libssh2-1.11.0.zip 继续下载OpenSSL库: https://codeload.github.com/openssl/openssl/zip/refs/heads/OpenSSL_1_0_2-stable

java中创建不可变集合

一.应用场景 二.创建不可变集合的书写格式&#xff08;List&#xff0c;Set&#xff0c;Map) List集合 package com.njau.d9_immutable;import java.util.Iterator; import java.util.List;/*** 创建不可变集合:List.of()方法* "张三","李四","王五…

SpringBoot中间件Docker

Docker&#xff08;属于C/S架构软件&#xff09; 简介与概述 1.Docker 是一个开源的应用容器引擎&#xff0c;基于 Go 语言 并遵从 Apache2.0 协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#xff0c;然后发布到任何流行的 Linux …

登 Nature 子刊!论文一作详解蛋白质语言模型的小样本学习方法,解决湿实验数据匮乏难题

在「Meet AI4S」系列直播第三期中&#xff0c;我们有幸邀请到了上海交通大学自然科学研究院 & 上海国家应用数学中心博士后周子宜&#xff0c; 他所在的上海交通大学洪亮课题组研究方向主要为 AI 蛋白和药物设计、分子生物物理。该课题组研究成果颇丰&#xff0c;截止目前共…

【AI副业项目】揭密AI技术对于儿童古诗文项目的应用

大家都知道&#xff0c;古诗文作为中华文化的瑰宝&#xff0c;承载着丰富的历史情感和智慧。但是&#xff0c;在现代社会快节奏的生活中&#xff0c;如何让更多人尤其是少年儿童感受到古诗文的魅力&#xff0c;成为了一个极需解决的问题。 AI技术的兴起为这一难题提供了新的解…

【D3.js in Action 3 精译_025】3.4 让 D3 数据适应屏幕(中)—— 线性比例尺的用法

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第一部分 D3.js 基础知识 第一章 D3.js 简介&#xff08;已完结&#xff09; 1.1 何为 D3.js&#xff1f;1.2 D3 生态系统——入门须知1.3 数据可视化最佳实践&#xff08;上&#xff09;1.3 数据可…

【Python】Streamlit:为数据科学与机器学习打造的简易应用框架

Streamlit 是一个开源的 Python 库&#xff0c;专为数据科学家和机器学习开发者设计&#xff0c;旨在快速构建数据应用。通过简单的 Python 脚本&#xff0c;开发者无需掌握前端技术&#xff0c;即可将数据分析和模型结果转化为直观、交互式的 Web 应用。其简洁的 API 设计使得…

MATLAB下的RSSI定位程序,二维平面上的定位,基站数量可自适应

文章目录 引言程序概述程序代码运行结果待定位点、锚点、计算结果显示待定位点和计算结果坐标 引言 随着无线通信技术的发展&#xff0c;基于 R S S I RSSI RSSI&#xff08;接收信号强度指示&#xff09;的方法在定位系统中变得越来越流行。 R S S I RSSI RSSI定位技术特别适…

Android车载——VehicleHal初始化(Android 11)

1 概述 VehicleHal是AOSP中车辆服务相关的hal层服务。它主要定义了与汽车硬件交互的标准化接口和属性管理&#xff0c;是一个独立的进程。 2 进程启动 VehicleHal相关代码在源码树中的hardware/interfaces/automotive目录下 首先看下Android.bp文件&#xff1a; cc_binary …

【Linux的那些事】shell命名及Linux权限的理解

目录 一、shell命令以及运行原理 二、Linux权限的概念 三、Linux权限管理 3.1.文件访问者的分类&#xff08;人&#xff09; 3.2.文件类型和访问权限&#xff08;事物属性&#xff09; 3.3.文件权限值的表示方法 3.4.文件访问权限的相关设置方法 a)chmod b)chown c)…

【Spring Boot React】Spring Boot和React教程 完整版

【Spring Boot & React】Spring Boot和React教程 在B站找到一个不错的SpringBoot和React的学习视频&#xff0c;作者是amigoscode 【Spring Boot & React】Spring Boot和React教程 2023年更新版【Spring Boot React】价值79.9美元&#xff0c;全栈开发&#xff0c;搭…

Luminar激光雷达公司裁员重组的深度分析

在科技行业风起云涌的今天,每一家企业都面临着前所未有的挑战与机遇。当地时间9月23日,美国激光雷达领域的领军企业Luminar Technologies向美国证券交易委员会(SEC)提交了一份8-K报告,正式宣布了一项重大的业务重组计划,其核心内容是通过进一步裁员来优化成本结构,以期在…

windows上安装python环境

前言 最近电脑重装了系统&#xff0c;需要重新安装python环境 &#xff0c;因此记录一下 1.下载 打开python官网下载&#xff0c;下载链接&#xff1a;https://www.python.org/downloads/windows/ 点击下载 &#xff0c;我这里使用64位操作系统(大部分电脑)&#xff0c;根据…