模拟-算法

文章目录

  • 替换所有的问号
  • 提莫攻击
  • Z字形变换
  • 外观数列
  • 数青蛙

替换所有的问号

算法思路:

从前往后遍历整个字符串,找到问号之后,就遍历 a ~ z 去尝试替换即可。

class Solution {public String modifyString(String s) {char[] ss = s.toCharArray();int n = ss.length;for(int i = 0; i < n; i++) {if(ss[i] == '?') {for(char ch = 'a'; ch <= 'z'; ch++) {if((i == 0 || ch != ss[i-1]) && (i == n-1 || ch != ss[i+1]) ) {ss[i] = ch;break;}}}}return String.valueOf(ss);}
}

提莫攻击

算法思路:
模拟 + 分情况讨论。
计算相邻两个时间点的差值:
i. 如果差值大于等于中毒时间,说明上次中毒可以持续 duration 秒;
ii. 如果差值小于中毒时间,那么上次的中毒只能持续两者的差值。

class Solution {public int findPoisonedDuration(int[] timeSeries, int duration) {int ret = 0;for(int i = 1; i < timeSeries.length; i++) {int x = timeSeries[i] -timeSeries[i-1];if(x >= duration) ret += duration;else ret += x;}ret += duration;return ret;}
}

Z字形变换

算法思路:
找规律,设行数为 numRows, numRows == 4 时画出的 Z 字形如下:
行号从0开始

在这里插入图片描述

不难发现,第零行和最后一行的数据是以 2numRows - 2 为公差递增的等差数列。
第一行、第二行第⼀个数取值为行数,第二个数夹在等差数列中间, 就是第零行的等差数列第二个数减去行数
以此规律,我们可以写出迭代算法。

class Solution {public String convert(String s, int numRows) {//处理边界情况if(numRows == 1) return s;int d = 2 * (numRows-1), n = s.length();StringBuilder ret = new StringBuilder();//1.处理第一行for(int i = 0; i < n; i += d) {ret.append(s.charAt(i));}//2.处理中间行for(int k = 1; k < numRows-1; k++) {for(int i = k, j = d -i; i < n || j < n; i += d, j += d) {if(i < n) ret.append(s.charAt(i));if(j < n) ret.append(s.charAt(j));}}//3.处理最后一行for(int i = numRows - 1; i < n; i += d)ret.append(s.charAt(i));return ret.toString();}
}

外观数列

算法思路:
所谓「外观数列」,其实只是依次统计字符串中连续且相同的字符的个数。依照题意,依次模拟即
可。

class Solution {public String countAndSay(int n) {String ret = "1";for(int i = 1; i < n; i++) {StringBuilder tmp = new StringBuilder();int len = ret.length();for(int left = 0, right = 0; right < len; ) {while(right < len && ret.charAt(left) == ret.charAt(right)) right++;tmp.append(Integer.toString(right - left));tmp.append(ret.charAt(left));left = right;}ret = tmp.toString();}return ret;}
}

数青蛙

算法思路:

  • 当遇到 ‘r’ ‘o’ ‘a’ ‘k’ 这四个字符的时候,我们要去看看对应的前驱字符,如果有前驱字符,那就让这个青蛙喊出来这个字符(这个字符加一),并且消去一个前驱字符;如果没有前驱字符,直接返回 -1
  • 当遇到 ‘c’ 这个字符的时候,我们去看看 ‘k’ 这个字符有没有青蛙叫出来。如果有,就让这个青蛙继续去喊 ‘c’ 这个字符(把’k’字符减去一个);如果没有的话,就增加⼀个青蛙。不管怎样 'c’字符都要加一

Map只是记录字符以及对应下标而已
定义的哈希表hash记录蛙叫次数,除了’k’其他字符会被下一个字符消掉,'k’只有在新增’c’的时候消掉,最后留下多少’k’就是几只蛙

class Solution {public int minNumberOfFrogs(String croakOfFrogs) {char[] ch = croakOfFrogs.toCharArray();String t = "croak";int n = t.length();int[] hash = new int[n];Map<Character, Integer> index = new HashMap<>();for(int i = 0; i < n; i++) {index.put(t.charAt(i), i);}for(char x : ch) {if(x == t.charAt(0)) {if(hash[n-1] != 0) hash[n-1]--;hash[0]++;} else {int i = index.get(x);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/284857.html

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

相关文章

谷歌DeepMind推出3D游戏AI代理SIMA,实现自然语言操控游戏新纪元

近日&#xff0c;谷歌DeepMind研究团队推出了一款名为SIMA的创新AI代理&#xff0c;专为3D游戏环境设计。这款代理独树一帜&#xff0c;无需访问游戏源代码或依赖定制API&#xff0c;仅通过输入图像和简单的自然语言文本指令&#xff0c;便能实现与人类玩家相当的游戏操作。 AI…

MATLAB的使用(一)

一&#xff0c;MATLAB的编程特点 a,语法高度简化&#xff1b; b,脚本式解释型语言&#xff1b; c,针对矩阵的高性能运算&#xff1b; d,丰富的函数工具箱支持&#xff1b; e,通过matlab本体构建跨平台&#xff1b; 二&#xff0c;MATLAB的界面 工具栏:提供快捷操作编辑器…

1-Flume中agent的source

Flume&#xff08;1.11.0版本&#xff09; 简介 概述 Flume本身是由Cloudera公司开发的后来贡献给了Apache的一套针对日志数据进行收集(collecting)、汇聚(aggregating)和传输(moving)的机制 Flume本身提供了简单且灵活的结构来完成日志数据的传输 Flume有两大版本&#x…

RIP,EIGRP,OSPF的区别

1.路由协议 能否选择出最优路径 2.路由协议 是否能够完成故障切换/多久能够完成故障切换 3.路由协议 是否会占用过大硬件资源 -- RIP -- 路由信息协议 跳数:一次三层设备的转发算一跳 中间隔的设备数量 不按照链路带宽来算 Rip认为路径一样,这个时候。 下面这个跳数不…

【C语言_数组_复习篇】

目录 一、数组的概念 二、数组的类型 三、一维数组 3.1 一维数组的创建 3.2 一维数组的初始化 3.3 一维数组的访问 3.4 一维数组在内存中的存储 四、二维数组 4.1 二维数组的创建 4.2 二维数组的初始化 4.3 二维数组的访问 4.4 二维数组在内存中的存储 五、变长数组 六、…

kafka面试篇

消息队列的作用&#xff1a;异步、削峰填谷、解耦 高可用&#xff0c;几乎所有相关的开源软件都支持&#xff0c;满足大多数的应用场景&#xff0c;尤其是大数据和流计算领域&#xff0c; kafka高效&#xff0c;可伸缩&#xff0c;消息持久化。支持分区、副本和容错。 对批处理…

ChatGPT论文指南|揭秘8大ChatGPT提示词研究技巧提升写作效率【建议收藏】

点击下方▼▼▼▼链接直达AIPaperPass &#xff01; AIPaperPass - AI论文写作指导平台 公众号原文▼▼▼▼&#xff1a; ChatGPT论文指南|揭秘8大ChatGPT提示词研究技巧提升写作效率【建议收藏】 目录 1.写作方法 2.方法设计 3.研究结果 4.讨论写作 5.总结结论 6.书…

常见技术难点及方案

1. 分布式锁 1.1 难点 1.1.1 锁延期 同一时间内不允许多个客户端同时获得锁&#xff1b; 1.1.2 防止死锁 需要确保在任何故障场景下&#xff0c;都不会出现死锁&#xff1b; 1.2.3 可重入 特殊的锁机制&#xff0c;它允许同一个线程多次获取同一个锁而不会被阻塞。 1.2…

【Linux】HTTP协议 HTTPS协议

jsoncpp库的安装使用 sudo yum install jsoncpp-devel 使用jsoncpp包含头文件<jsoncpp/json/json.h> Makefile要添加链接jsoncpp库的选项-ljsoncpp HTTP协议 应用层&#xff1a;通俗说就是程序员在socket接口之上编写的具体逻辑&#xff0c;其中很多工作都是和文本处理…

蓝桥杯需要掌握的几个案例(C/C++)

文章目录 蓝桥杯C/C组的重点主要包括以下几个方面&#xff1a;以下是一些在蓝桥杯C/C组比赛中可能会涉及到的重要案例类型&#xff1a;1. **排序算法案例**&#xff1a;2. **查找算法案例**&#xff1a;3. **数据结构案例**&#xff1a;4. **动态规划案例**&#xff1a;5. **图…

Linux的一些基本指令

​​​​​​​ 目录 前言&#xff1a; 1.以指令的形式登录 2.ls指令 语法&#xff1a; 功能&#xff1a; 常用选项&#xff1a; 3.pwd指令 4.cd指令 4.1 绝对路径与相对路径 4.2 cd .与cd ..&#xff08;注意cd后先空格&#xff0c;然后两个点是连一起的&#xff0…

选择word中的表格VBA

打开开发工具 选择Visual Basic插入代码 Sub 选择word中的表格() Dim t As Table an MsgBox("即将选择选区内所有表格&#xff0c;若无选区&#xff0c;则选择全文表格。", vbYesNo, "提示") If an - 6 Then Exit Sub Set rg IIf(Selection.Type wdSel…

33-Java服务定位器模式 (Service Locator Pattern)

Java服务定位器模式 实现范例 服务定位器模式&#xff08;Service Locator Pattern&#xff09;用于想使用 JNDI 查询定位各种服务的时候考虑到为某个服务查找 JNDI 的代价很高&#xff0c;服务定位器模式充分利用了缓存技术在首次请求某个服务时&#xff0c;服务定位器在 JNDI…

return code 1 from org.apache.hadoop.hive.ql.ddl.DDLTask

Bug信息 Error: Error while compiling statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.ddl.DDLTask (state=08S01,code=1)Bug产生的代码 修复hive表分区: msck repair table xxxBug原因排查 分区数量过大 这个是网上查看的说如果一次…

(三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练

这里写目录标题 一、colmap解算数据放入高斯1. 将稀疏重建的文件放入高斯2. 将稠密重建的文件放入高斯 二、vkitti数据放入高斯 一、colmap解算数据放入高斯 运行Colmap.bat文件之后&#xff0c;进行稀疏重建和稠密重建之后可以得到如下文件结构。 1. 将稀疏重建的文件放入高…

02.percona Toolkit工具pt-archiver命令实践

1.命令作用 Percona Toolkit有的32个命令&#xff0c;可以分为7大类 工具类别 工具命令 工具作用 备注 开发类 pt-duplicate-key-checker 列出并删除重复的索引和外键 pt-online-schema-change 在线修改表结构 pt-query-advisor 分析查询语句&#xff0c;并给出建议&#x…

AST学习入门

AST学习入门 1.AST在线解析网站 https://astexplorer.net/ 1.type: 表示当前节点的类型&#xff0c;我们常用的类型判断方法t.is********(node)**,就是判断当前的节点是否为某个类型。 2**.start**:表示当前节点的开始位置 3.end:当前节点结束 4.loc : 表示当前节点所在的行…

项目解决方案:旅游景区4G/5G无线视频监控联网系统设计方案

目录 一、背景 二、系统设计 1.1 总体设计要求 1.2 系统架构设计说明 1.3 系统拓扑图 1.4 关键技术 1.4.1 5G支持技术 1.4.2 视频图像处理技术 1.4.3 数据融合与分析技术 三、功能特点 3.1 高效可靠 3.2 实时监测 3.3 远程控制 3.4 故障预测 四、应用前景 …

DBO优化GRNN回归预测(matlab代码)

DBO-GRNN回归预测matlab代码 蜣螂优化算法(Dung Beetle Optimizer, DBO)是一种新型的群智能优化算法&#xff0c;在2022年底提出&#xff0c;主要是受蜣螂的的滚球、跳舞、觅食、偷窃和繁殖行为的启发。 数据为Excel股票预测数据。 数据集划分为训练集、验证集、测试集,比例…

面试笔记——Redis(双写一致、持久化)

双写一致 双写一致性&#xff1a; 当修改了数据库中的数据&#xff0c;也要更新缓存的数据&#xff0c;使缓存和数据库中的数据保持一致。 相关问题&#xff1a;使用Redis作为缓存&#xff0c;mysql的数据如何与Redis进行同步&#xff1f;——双写一致性问题 回答时&#xff0…