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

留言网站建设济南网站开发

留言网站建设,济南网站开发,百度竞价广告怎么投放,php开发网站的优势1. 什么是模拟算法? 官方一点来说 模拟算法(Simulation Algorithm)是一种通过模拟现实或抽象系统的运行过程来研究、分析或解决问题的方法。它通常涉及创建一个模型,模拟系统中的各种事件和过程,以便观察系统的行为&a…

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;}
};

http://www.yayakq.cn/news/913952/

相关文章:

  • 网站开发的简易步骤西安网站漏洞
  • 网站开发技术简介张家港市规划建设网站
  • 网站注册信息查询如何建立简单网站
  • 网站空间如何使用wordpress 苏醒
  • 成都网站制作系统网站建设评价
  • 网站三个月没排名黑科技引流推广神器怎么下载
  • 网站长尾词怎么做网站怎样多语言
  • 海外网站优化建设校园网站的好处
  • 敦煌壁画网站开发毕设论文wordpress的链接怎么设置
  • 汕头门户网站广州设计公司排行榜
  • 旅行社网站建设设计公司哪家好网站建设取得实效
  • wordpress get post id贵阳网站搜索优化
  • 网站建设部署济南哪里有做网站的公司
  • 网站开发前如何配置电脑国外免费网站空间
  • 网站建设公司有哪些重要职务北京企业网站制作哪家好
  • 模具做外贸网站wordpress官方空间
  • xp系统中做网站服务器新建html网站
  • 网站建设毕业设计论文拓者设计吧注册码
  • 创意网站设计 高端html商品页面代码
  • 2018做网站前景好么东莞网站建设网站制作公司
  • 自己做图片的网站链接海报设计在线生成
  • 申请建设门户网站的申请推广运营方案
  • 店铺只做商品展示网站怎么做怎么做网站的访问量
  • 企业网站排名优化公司wordpress 占内存
  • 一个网站建立团队大概要多少钱百度关键词点击
  • 做旅游去哪个网站找图中铁建设集团有限公司梅洪亮
  • 临沂网站建设微信把网站打包微信小程序
  • 江苏和城乡建设部网站首页谷歌网站提交
  • 黑豹站群系统常熟港口建设费申报网站
  • 有没有免费的源码网站论文检索网站怎么做