当前位置: 首页 > news >正文

算法——模拟

1. 什么是模拟算法?

官方一点来说

模拟算法(Simulation Algorithm)是一种通过模拟现实或抽象系统的运行过程来研究、分析或解决问题的方法。它通常涉及创建一个模型,模拟系统中的各种事件和过程,以便观察系统的行为,收集数据并得出结论。这类算法适用于复杂的系统,其中涉及许多相互作用的元素和随时间变化的状态。

通俗来说

我们只需要对照题目,提取出对应的流程,将这个流程转换成代码。需要注意的是, 我们要在草稿纸上过一遍流程,不然很容易出问题。

2. 应用实例

1. 替换所有的问号

题目链接:1576. 替换所有的问号 - 力扣(LeetCode)

解析:分析一下这道题目,我们大致可以遍历一遍数组,在‘?’处从‘a’~‘z’挑选一个合适的字符替换该位置,代码如下

class Solution 
{
public:string modifyString(string s) {int n = s.size();for (int i = 0; i < n; i++){if (s[i] == '?'){for (char c = 'a'; c <= 'z'; c++){// 如果?在0位默认前面是符合要求的,最后一位同理if ((i == 0 || c != s[i-1]) && (i == n-1 || c != s[i+1]))s[i] = c;}}}return s;}
};

2. 提莫攻击

题目链接:495. 提莫攻击 - 力扣(LeetCode)

解析:分析题目,我们可以知道每次提莫攻击时,都会重置中毒时间,因此我们只需要计算一下两个攻击的间隔时间,若小于duration就加上这个间隔时间,若大于等于则加上duration即可,即

这之后由于最后一段中毒时间没有统计上去,直接加上即可,代码如下

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

3. Z字型变换

题目链接:6. Z 字形变换 - 力扣(LeetCode)

解析:分析这道题目,我们可以知道整个字符串s会被排列成numrows行,仔细观察可以发现所有的下标均满足下面的变化规律:0 -> numRows-1 -> 0 ->numRows-1,我们可以对下标的变化进行模拟,即设定一个flag表示当前下标向下还是向上移动,移动到边界时将i与flag修改成正确值,同时创建一个<int, string>的哈希表来储存每行字符串,最后遍历一遍哈希表即可(注:这里需要对numRows为1做特殊情况处理),代码如下

class Solution 
{
public:string convert(string s, int numRows) {if (numRows == 1) return s;int n = s.size();unordered_map<int, string> hash;string ret;int i = 0, flag = 1;// flag为1表示向下移动for (auto& ch : s){if (i == numRows) flag = 0, i -= 2;if (i == -1) flag = 1, i += 2;hash[i] += ch;if (flag) i++;else i--;}for (int i = 0; i < numRows; i++) ret += hash[i];return ret;}
};

4. 外观数组

题目链接:38. 外观数列 - 力扣(LeetCode)

解析:分析题目,我们可以发现这道题的意思是让我们每次描述前一个字符串,因此我们只需要创建一个临时字符串s即可,然后每次统计描述之后更新s即可,代码如下

class Solution 
{
public:string countAndSay(int n) {string s = "1";while (--n){string pre = s;string now;int num = 0;for (int left = 0, right = 0; right < pre.size(); right++){if (pre[left] != pre[right]) {now += to_string(num) + pre[left];left = right;num = 1;}else num++;}now += to_string(num)+ pre.back();s = now;}return s;}
};

相关文章:

算法——模拟

1. 什么是模拟算法&#xff1f; 官方一点来说 模拟算法&#xff08;Simulation Algorithm&#xff09;是一种通过模拟现实或抽象系统的运行过程来研究、分析或解决问题的方法。它通常涉及创建一个模型&#xff0c;模拟系统中的各种事件和过程&#xff0c;以便观察系统的行为&a…...

如何进行高性能架构的设计

一、前端优化 减少请求次数页面静态化边缘计算 增加缓存控制&#xff1a;请求头 减少图像请求次数&#xff1a;多张图片变成 一张。 减少脚本的请求次数&#xff1a;css和js压缩&#xff0c;将多个文件压缩成一个文件。 二、页面静态化 三、边缘计算 后端优化 从三个方面进…...

vivado FSM Components

Vivado合成功能 •同步有限状态机&#xff08;FSM&#xff09;组件的特定推理能力。 •内置FSM编码策略&#xff0c;以适应您的优化目标。 •FSM提取默认启用。 •使用-fsm_extraction off可禁用fsm提取。 FSM描述 Vivado综合支持Moore和Mealy中的有限状态机&#xff08;…...

从零开始手写mmo游戏从框架到爆炸(十五)— 命令行客户端改造

导航&#xff1a;从零开始手写mmo游戏从框架到爆炸&#xff08;零&#xff09;—— 导航-CSDN博客 到现在&#xff0c;我们切实需要一个客户端来完整的进行英雄选择&#xff0c;选择地图&#xff0c;打怪等等功能。所以我们需要把之前极为简陋的客户端改造一下。 首先…...

Elasticsearch:什么是 kNN?

kNN - K-nearest neighbor 定义 kNN&#xff08;即 k 最近邻算法&#xff09;是一种机器学习算法&#xff0c;它使用邻近度将一个数据点与其训练并记忆的一组数据进行比较以进行预测。 这种基于实例的学习为 kNN 提供了 “惰性学习&#xff08;lazy learning&#xff09;” 名…...

掌握网络未来:深入解析RSVP协议及其在确保服务质量中的关键作用

第一部分&#xff1a;RSVP简介 资源预留协议&#xff08;RSVP&#xff09;是一种网络协议&#xff0c;用于在网络中的各个节点之间预留资源&#xff0c;以支持数据流的服务质量&#xff08;QoS&#xff09;要求。RSVP特别适用于需要固定带宽和处理延迟的应用&#xff0c;如视频…...

【Linux】一站式教会:Ubuntu(无UI界面)使用apache-jmeter进行压测

&#x1f3e1;浩泽学编程&#xff1a;个人主页 &#x1f525; 推荐专栏&#xff1a;《深入浅出SpringBoot》《java对AI的调用开发》 《RabbitMQ》《Spring》《SpringMVC》 &#x1f6f8;学无止境&#xff0c;不骄不躁&#xff0c;知行合一 文章目录 前言一、Java…...

Howler.js:音频处理的轻量级解决方案

文章目录 Howler.js&#xff1a;音频处理的轻量级解决方案引言一、Howler.js简介1.1 特性概览 二、Howler.js基本使用使用详解2.1 创建一个Howl对象2.2 控制音频播放2.3 监听音频事件 三、进阶功能3.1 音频Sprites3.2 3D音频定位 四、微前端场景下的Howler.js Howler.js&#x…...

【讨论】Web端测试和App端测试的不同,如何说得更有新意?

Web 端测试和 App 端测试是针对不同平台的上的应用进行测试&#xff0c;Web应用和App端的应用实现方式不同&#xff0c;测试时的侧重点也不一样。 Web端应用和App端应用的区别&#xff1a; 平台兼容性 安装方式 功能和性能 用户体验 更新和维护 测试侧重点有何不同 平台…...

运维SRE-18 自动化批量管理-ansible4

12.2handles handles触发器(条件)&#xff0c;满足条件后再做什么事情应用场景&#xff1a;想表示&#xff1a;配置文件变化&#xff0c;再重启服务 配置handlers之前&#xff0c;每次运行剧本都会重启nfs&#xff0c;无论配置文件是否变化。 [rootm01 /server/ans/playbook]…...

编程笔记 Golang基础 008 基本语法规则

编程笔记 Golang基础 008 基本语法规则 Go语言的基本语法规则. Go语言的基本语法规则包括但不限于以下要点&#xff1a; 标识符&#xff1a; 标识符用于命名变量、常量、类型、函数、包等。标识符由字母&#xff08;a-z&#xff0c;A-Z&#xff09;、数字&#xff08;0-9&#…...

android input命令支持多指触摸成果展示-千里马framework实战开发

hi input命令扩展提示部分 generic_x86_64:/ # input -h Error: Unknown command: -h Usage: input [<source>] <command> [<arg>...]The source…...

Stable Diffusion 模型分享:Indigo Furry mix(人类与野兽的混合)

本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十...

OpenAI Sora引领AI跳舞视频新浪潮:字节跳动发布创新舞蹈视频生成框架

OpenAI的Sora已经引起广泛关注&#xff0c;预计今年AI跳舞视频将在抖音平台上大放异彩。下面将为您详细介绍一款字节跳动发布的AI视频动画框架。 技术定位&#xff1a;这款框架采用先进的diffusion技术&#xff0c;专注于生成人类舞蹈视频。它不仅能够实现人体动作和表情的迁移…...

[深度学习] 卷积神经网络“卷“在哪里?

​ &#x1f308; 博客个人主页&#xff1a;Chris在Coding &#x1f3a5; 本文所属专栏&#xff1a;[深度学习] ❤️ 热门学习专栏&#xff1a;[Linux学习] ⏰ 我们仍在旅途 目录 1.卷积的定义 2.卷积的"卷"在哪里 3.什么又是卷积神…...

企业网络安全自查:总结报告与改进指南

按照网络和数据安全监督检查工作的要求&#xff0c; 现将网络信息安全自查阶段有关情况总结如下&#xff1a; 一、自查工作的组织开展情况 我单位始终高度重视网络与信息安全自查工作&#xff0c; 成立专项管理组织机构&#xff0c;深入学习贯彻相关文件精神&#xff0c;严格…...

怎么理解ping?这是我听过最好的回答

晚上好&#xff0c;我是老杨。 Ping这几个字母&#xff0c;已经深入网工人的骨髓了吧&#xff1f; 把Ping用到工作里&#xff0c;肯定不少人在用&#xff0c;但对Ping的了解和理解是不是足够深&#xff0c;取决了你能在工作里用到什么程度&#xff0c;能让它帮你到什么地步。…...

用户请求到响应可能存在的五级缓存

用户请求到响应可能存在的五级缓存 当用户在浏览器中输入URL进行访问时&#xff0c;请求并不是直接达到服务器&#xff0c;而是会经历多级缓存&#xff0c;以提高网络效率。本文将详细介绍用户请求到响应可能会经历的五个缓存级别&#xff1a;浏览器缓存&#xff0c;代理缓存&…...

云图极速版限时免费活动

产品介绍 云图极速版是针对拥有攻击面管理需求的用户打造的 SaaS 应用&#xff0c;致力于协助用户发现并管理互联网资产攻击面。 实战数据 (2023.11.6 - 2024.2.23) 云图极速版上线 3 个月以来&#xff0c;接入用户 3,563 家&#xff0c;扫描主体 19,961 个&#xff0c;累计发…...

vue3 vuex

目录 Vuex 是什么 什么是“状态管理模式”&#xff1f; 什么情况下我应该使用 Vuex&#xff1f; 使用方法&#xff1a; 提交载荷&#xff08;Payload&#xff09; 对象风格的提交方式 使用常量替代 Mutation 事件类型 Mutation 必须是同步函数 在组件中提交 Mutation …...

Java架构师之路三、网络通信:TCP/IP协议、HTTP协议、RESTful API、WebSocket、RPC等。

目录 TCP/IP协议&#xff1a; HTTP协议&#xff1a; RESTful API&#xff1a; WebSocket&#xff1a; RPC&#xff1a; UDP&#xff1a; HTTPS&#xff1a; 上篇&#xff1a;Java架构师之路二、数据库&#xff1a;SQL语言、关系型数据库、非关系型数据库、数据一致性、事…...

【C++】笔试训练(九)

目录 一、选择题二、编程题1、另类加法2、走方格的方案数 一、选择题 1、某函数申明如下 void Func(int& nVal1);有int a,下面使用正确的为&#xff08;&#xff09; A Func(a) B Func(&a) C Func(*a) D Func(&(*a)) 答案&#xff1a;A 2、C语言中&#xff0c;类…...

模板注入 [BJDCTF2020]Cookie is so stable1

打开题目 有flag页面&#xff0c;有Hint页面 这里题目有提示&#xff0c;突破口是在cookie上面 经过测试发现有ssti注入&#xff1a; 抓包 判断模板注入类型的办法 输入 {{7*‘7’}} 回显49 输入{{7*‘7’}}&#xff0c;返回49表示是 Twig 模块 输入{{7*‘7’}}&#xff0…...

2-18算法习题总结

二分查找问题 [COCI 2011/2012 #5] EKO / 砍树 题目描述 伐木工人 Mirko 需要砍 M M M 米长的木材。对 Mirko 来说这是很简单的工作&#xff0c;因为他有一个漂亮的新伐木机&#xff0c;可以如野火一般砍伐森林。不过&#xff0c;Mirko 只被允许砍伐一排树。 Mirko 的伐木…...

【软考高项】【英语知识】-- 单词积累

目录 一、常见计算机技术词汇 二、项目管理词汇 2.1 十大知识域 2.2 五大过程组 2.3 49个子过程 2.4 工具和技术汇总 2.5 输入和输出汇总 一、常见计算机技术词汇 序号中文英文1云计算Cloud computing2云存储Cloud storage3云服务Cloud service4软件即服务SaaS5平台即服…...

外包干了3个月,技术退步明显

先说一下自己的情况&#xff0c;本科生&#xff0c;19年通过校招进入广州某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…...

【ArcGIS微课1000例】0105:三维模型转体模型(导入sketchup转多面体为例)

文章目录 一、实验概述二、三维模型转多面体三、加载多面体数据四、注意事项一、实验概述 ArcGIS可以借助【导入3D文件】工具支持主流的三维模型导入。支持 3D Studio Max (.3ds)、VRML and GeoVRML 2.0 (.wrl)、SketchUp 6.0 (.skp)、OpenFlight 15.8 (.flt)、Collaborative …...

创建型设计模式 - 原型设计模式 - JAVA

原型设计模式 一 .简介二. 案例三. 补充知识 前言 这是我在这个网站整理的笔记,有错误的地方请指出&#xff0c;关注我&#xff0c;接下来还会持续更新。 作者&#xff1a;神的孩子都在歌唱 一 .简介 原型模式提供了一种机制&#xff0c;可以将原始对象复制到新对象&#xff0…...

Squid代理:APT、PyPI和Docker的内网穿透解决方案

如果你是在内网环境&#xff0c;并且你知道一台服务器可以链接外网&#xff0c;可以通过Squid代理的方式更新apt、pypi、docker源。 你可以通过在服务器A&#xff08;172.16.16.122&#xff0c;可上外网&#xff09;上设置代理服务器来实现服务器B通过服务器A访问外部APT源的需…...

MYSQL--触发器

一:介绍: 1.触发器实际上就是一种特殊的存储过程,两者都能够在MYSQL当中完成特定的功能,存储在服务器上的特殊SQL片段,可以重复进行使用,提高复用性的一种功能.但是触发器并不需要进行调用,在使用DML操作的时候会自动的调用相关的触发器操作 2.触发器能够对于DML操作当中的,删除…...

wordpress 魔板/武汉软件测试培训机构排名

DOM总结&#xff1a;DOM&#xff1a;文档对象模型document object modelDOM三层模型&#xff1a;DOM1&#xff1a;将HTML文档封装成对象DOM2&#xff1a;将XML文档封装成对象DOM3&#xff1a;将XML文档封装成对象DOM树&#xff1a;将HTML中的标签按照层级关系封装成节点对象DOM…...

wordpress 含演示数据/网络营销论文3000字

在 X window system中&#xff0c;窗体之间传输数据&#xff0c;使用的是“selection”&#xff0c;也就是常说的“剪贴板”   X window system中支持任意的selection.   其中&#xff0c;最重要的是PRIMARY selection&#xff0c;然后是CLIPBOARD selection&#xff0c;还…...

做的好的响应式网站/百度一下百度首页登录

2019独角兽企业重金招聘Python工程师标准>>> 开发小结&#xff1a; 转载于:https://my.oschina.net/inchlifc/blog/1609084...

做网站的销售员电话话术/应用商店app下载

intro为什么需要link呢linker主要做了哪些工作呢目标文件ELF Symbol Link链接器变量Symbol ResolutionLocal SymbolLinker Symbol Rule Relocation Packaging Libstatic libariesDynamic liblib interpositioning 转载请注明出处&#xff1a;http://blog.csdn.net/c602273091/…...

什么网站可以做旅行行程/seo站内优化公司

Spring 4 异常处理参考文章&#xff1a; &#xff08;1&#xff09;Spring 4 异常处理 &#xff08;2&#xff09;https://www.cnblogs.com/chenpi/p/6117090.html &#xff08;3&#xff09;https://www.javazxz.com/thread-4831-1-1.html 备忘一下。...

动态网站的功能与特点/怎样做网站的优化、排名

East Central North America 2005-2006——Two Ends 题目来源&#xff1a; POJ 2738Codeforces Gym 100650H题意&#xff1a; 有一组数&#xff0c;你和一个人轮流取数&#xff08;只能从两端取&#xff09;&#xff0c;问你能取到的最大的数和同时对方取到的数的差值。 题解&a…...