【优选算法】模拟 {经验总结;相关编程题解析}

一、经验总结

模拟题型的算法原理相对简单,就是依葫芦画瓢:题目中怎样描述,算法就怎样执行。考验的主要是将实际问题转换为代码的能力。

但是模拟题型并不是只能傻乎乎的按步骤编码,也可以先将模拟算法的流程通过举例或绘图演示一遍,再从中总结规律或是利用数学办法进行计算,算法的效率也能得到很大的提升。


二、相关编程题

2.1 替换所有的问号

题目链接

1576. 替换所有的问号 - 力扣(LeetCode)

题目描述

在这里插入图片描述

算法原理

在这里插入图片描述

编写代码

class Solution {
public:string modifyString(string s) {for(size_t 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]){continue;}else{s[i] = ch;break;}   }}}return s;}
};

2.2 提莫攻击

题目链接

495. 提莫攻击 - 力扣(LeetCode)

题目描述

在这里插入图片描述

算法原理

在这里插入图片描述

编写代码

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

2.3 N字形变换

题目链接

6. Z 字形变换 - 力扣(LeetCode)

题目描述

在这里插入图片描述

算法原理

在这里插入图片描述

编写代码

class Solution {
public:string convert(string s, int numRows) {// 处理边界情况if (numRows == 1)return s;int d = 2 * numRows - 2;int n = s.size();string ret;// 处理第一行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;}
};

2.4 外观数列

题目链接

38. 外观数列 - 力扣(LeetCode)

题目描述

在这里插入图片描述

算法原理

在这里插入图片描述

编写代码

//递归
class Solution {
public:string countAndSay(int n) {if(n == 1) return "1";string prev = countAndSay(n - 1);string ret;int left = 0, right = 0;while (right < prev.size()) {if (prev[left] != prev[right]) {ret += (right - left) + '0';ret += prev[left];left = right;} else {++right;}}ret += (right - left) + '0';ret += prev[left];return ret;}
};//非递归
class Solution {
public:string countAndSay(int n) {string ret = "1";for(int i = 0; i < n-1; ++i){string tmp;int left = 0, right = 0;while(right < ret.size()){while(right < ret.size() && ret[right] == ret[left])++right;tmp += to_string(right-left) + ret[left];left = right;}ret = tmp;}return ret;}
};

2.5 数青蛙

题目链接

1419. 数青蛙 - 力扣(LeetCode)

题目描述

在这里插入图片描述

算法原理

在这里插入图片描述

编写代码

class Solution {
public:int minNumberOfFrogs(string croakOfFrogs) {//将所有得字符映射到数组,方便找到croak中的前一个字符string str = "croak";unordered_map <char, int> index;int n = str.size();for(int i = 0; i < n; ++i){index[str[i]] = i;}//该哈希表用于追踪每只青蛙的croakvector<int> hash(n, 0); for(int i = 0; i < croakOfFrogs.size(); ++i){char curi = index[croakOfFrogs[i]];if(curi == 0){if(hash[n-1] != 0) --hash[n-1];++hash[curi];}else{if(hash[curi-1] == 0) return -1; //存在无效的croak--hash[curi-1];++hash[curi];}}//检查无尾的croakfor(int i = 0; i < n-1; ++i){if(hash[i] != 0) return -1; //存在无效的croak}return hash[n-1];}
};

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

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

相关文章

Excel插入多行VBA实现

我们还可以利用 VBA&#xff08;Visual Basic for Applications&#xff09;宏语言&#xff0c;在 Excel 中写一个 VBA 宏来自动插入多行数据。这种方法可以方便我们自定义需要插入的行数和插入位置。下面是编写 VBA 宏的步骤&#xff1a; 1、按下Alt F11快捷键&#xff0c;打…

VS QT 里头文件的<>和““的区别

今天在跑项目的时候遇到这么个问题&#xff0c;在添加api宏定义的时候&#xff0c;不加显示无法识别的外部错误&#xff0c;加了显示找不到文件。反正就是怎么都是错的&#xff0c;但是我检查了CmakeLists、模块所在文件夹、项目路径都是没有问题的。非常奇怪。 然后就开始尝试…

linux安装KubeSphere

linux安装KubeSphere 介绍 KubeSphere 是在目前主流容器调度平台 Kubernetes 之上构建的企业级分布式多租户容器平台&#xff0c;提供简单易用的操作界面以及向导式操作方式&#xff0c;在降低用户使用容器调度平台学习成本的同时&#xff0c;极大减轻开发、测试、运维的日常…

通联支付API集成(适用于SpringBoot)

目标&#xff1a; 学习如何使用Java与通联支付API进行交互 实现一个简单的支付下单和查询订单状态的示例 所需材料&#xff1a; 通联支付API文档 官方文档https://aipboss.allinpay.com/know/devhelp/main.php?pid38#mid313 通联支付加签代码SybUtil package com.allin…

【软考中级 软件设计师】计算机网络和安全

计算机网络和安全是软件设计师&#xff08;软考中级&#xff09;考试中的重要组成部分&#xff0c;它涵盖了网络基础、网络协议、网络架构、网络安全等多个方面。以下是一些核心概念和要点&#xff0c; 计算机网络基础 OSI七层模型&#xff1a;物理层、数据链路层、网络层、传…

LLM答案抽取|xFinder:针对大型语言模型的稳健且精确的答案提取

【摘要】大型语言模型&#xff08;LLM&#xff09;的不断进步使人们越来越关注开发公平可靠的方法来评估其性能的关键问题。特别是测试集泄漏、提示格式过拟合等主观或非主观作弊现象的出现&#xff0c;给法学硕士的可靠评估带来了重大挑战。由于评估框架通常利用正则表达式 (R…

《最新出炉》系列初窥篇-Python+Playwright自动化测试-39-highlight() 方法之追踪定位

1.简介 在之前的文章中宏哥讲解和分享了&#xff0c;为了看清自动化测试的步骤&#xff0c;通过JavaScript添加高亮颜色&#xff0c;就可以清楚的看到执行步骤了。在学习和实践Playwright的过程中&#xff0c;偶然发现了使用Playwright中的highlight()方法也突出显示Web元素。…

eNSP-集线器(hub)连接局域网

一、拓扑结构搭建 二、主机配置 pc1、pc2、pc3 三、测试 Hub相当于大家共享一条线路(类似于电线搭电)&#xff0c;线路上的所有的设备都会接收同样的信息。

路由器不能端口映射什么原因?如何设置内网映射?

近期有小伙伴发来求助信息&#xff0c;他以前开游戏服务器和别人一起玩&#xff0c;那个时候端口映射还好&#xff0c;不知道哪一天开始突然不行了&#xff0c;已经是公网了&#xff0c;光猫是桥接的状态&#xff0c;连路由器都换了&#xff0c;就是不能端口映射开服务器&#…

VAE-变分自编码器(Variational Autoencoder,VAE)

变分自编码器&#xff08;Variational Autoencoder&#xff0c;VAE&#xff09;是一种生成模型&#xff0c;结合了概率图模型与神经网络技术&#xff0c;广泛应用于数据生成、表示学习和数据压缩等领域。以下是对VAE的详细解释和理解&#xff1a; 基本概念 1. 自编码器&#…

基于 Milvus Cloud + LlamaIndex 实现初级 RAG

初级 RAG 初级 RAG 的定义 初级 RAG 研究范式代表了最早的方法论,在 ChatGPT 广泛采用后不久就取得了重要地位。初级 RAG 遵循传统的流程,包括索引创建(Indexing)、检索(Retrieval)和生成(Generation),常常被描绘成一个“检索—读取”框架,其工作流包括三个关键步…

WebSocket简介

参考&#xff1a;Java NIO实现WebSocket服务器_nio websocket-CSDN博客 WebSocket API是HTML5中的一大特色&#xff0c;能够使得建立连接的双方在任意时刻相互推送消息&#xff0c;这意味着不同于HTTP&#xff0c;服务器服务器也可以主动向客户端推送消息了。 WebSocket协议是…

【PB案例学习笔记】-08 控件拖动实现

写在前面 这是PB案例学习笔记系列文章的第8篇&#xff0c;该系列文章适合具有一定PB基础的读者。 通过一个个由浅入深的编程实战案例学习&#xff0c;提高编程技巧&#xff0c;以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码&#xff0c;小凡都上传到了gitee…

1941springboot VUE 服务机构评估管理系统开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 springboot VUE服务机构评估管理系统是一套完善的完整信息管理类型系统&#xff0c;结合springboot框架和VUE完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用springboot框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有完整的源代…

计算机-编程相关

在 Linux 中、一切都是文件、硬件设备是文件、管道是文件、网络套接字也是文件。 for https://juejin.cn/post/6844904103437582344 fork 进程的一些问题 fork 函数比较特殊、一次调用会返回两次。在父进程和子进程都会返回。 每个进程在内核中都是一个 taskstruct 结构、for…

Thingsboard规则链:Entity Type Switch节点详解

在物联网&#xff08;IoT&#xff09;领域&#xff0c;随着设备数量的爆炸式增长和数据复杂性的增加&#xff0c;高效、灵活的数据处理机制变得至关重要。作为一款先进的物联网平台&#xff0c;ThingsBoard提供了强大的规则链&#xff08;Rule Chains&#xff09;功能&#xff…

第四节 Starter 加载时机和源码理解

tips&#xff1a;每个 springBoot 的版本不同&#xff0c;代码的实现存会存在不同。 上一章&#xff0c;我们聊到 mybatis-spring-boot-starter&#xff1b; 简单分析了它的结构。 这一章我们将着重分析 Starter 的加载机制&#xff0c;并结合源码进行分析理解。 一、加载实际…

问题与解决:element ui垂直菜单展开后显示不全

比如我这个垂直菜单展开后&#xff0c;其实系统管理下面还有其他子菜单&#xff0c;但是显示不出来了。 解决方法很简单&#xff0c;只需要在菜单外面包一层el-scrollbar&#xff0c;并且将高度设置为100vh。

Laravel 11 PHP8

一直都是用laravel 7 左右的&#xff0c;现在要求将项目升级到laravel 11 和使用PHP8&#xff0c;随手记录一些小问题&#xff0c;laravel 11的包是领导给的&#xff0c;没有使用composer 安装&#xff0c;所以我也不确定和官方的是否一致 遇到这问题 可以这样 env 中默认的数…

基于若依的旅游推荐管理系统(spring boot+vue+mybatis+Ajax)

一、项目目的 随着社会的高速发展&#xff0c;人们生活水平的不断提高&#xff0c;以及工作节奏的加快&#xff0c;旅游逐渐成为一个热门的话题&#xff0c;因为其形式的多样&#xff0c;涉及的面比较广&#xff0c;成为人们放松压力&#xff0c;调节情绪的首要选择。 传统的旅…