6.优化算法之模拟

1.替换所有的问号

. - 力扣(LeetCode)

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||ss[i-1]!=ch)&&(i==n-1||ss[i+1]!=ch)){//注意该判断ss[i]=ch;break;}}}}return String.valueOf(ss);}
}

2.提莫攻击 

在《英雄联盟》的世界中,有一个叫 “提莫” 的英雄。他的攻击可以让敌方英雄艾希(编者注:寒冰射手)进入中毒状态。

当提莫攻击艾希,艾希的中毒状态正好持续 duration 秒。

正式地讲,提莫在 t 发起攻击意味着艾希在时间区间 [t, t + duration - 1](含 t 和 t + duration - 1)处于中毒状态。如果提莫在中毒影响结束  再次攻击,中毒状态计时器将会 重置 ,在新的攻击之后,中毒影响将会在 duration 秒后结束。

给你一个 非递减 的整数数组 timeSeries ,其中 timeSeries[i] 表示提莫在 timeSeries[i] 秒时对艾希发起攻击,以及一个表示中毒持续时间的整数 duration 。

返回艾希处于中毒状态的  秒数。

 

示例 1:

输入:timeSeries = [1,4], duration = 2
输出:4
解释:提莫攻击对艾希的影响如下:
- 第 1 秒,提莫攻击艾希并使其立即中毒。中毒状态会维持 2 秒,即第 1 秒和第 2 秒。
- 第 4 秒,提莫再次攻击艾希,艾希中毒状态又持续 2 秒,即第 4 秒和第 5 秒。
艾希在第 1、2、4、5 秒处于中毒状态,所以总中毒秒数是 4 。

示例 2:

输入:timeSeries = [1,2], duration = 2
输出:3
解释:提莫攻击对艾希的影响如下:
- 第 1 秒,提莫攻击艾希并使其立即中毒。中毒状态会维持 2 秒,即第 1 秒和第 2 秒。
- 第 2 秒,提莫再次攻击艾希,并重置中毒计时器,艾希中毒状态需要持续 2 秒,即第 2 秒和第 3 秒。
艾希在第 1、2、3 秒处于中毒状态,所以总中毒秒数是 3 。

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

3.Z字形变换

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

将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。

比如输入字符串为 "PAYPALISHIRING" 行数为 3 时,排列如下:

P   A   H   N
A P L S I I G
Y   I   R

之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"PAHNAPLSIIGYIR"

请你实现这个将字符串进行指定行数变换的函数:

string convert(string s, int numRows);

 解法一:模拟

解法二:找规律 

class Solution {public static String convert(String s, int numRows) {int n=s.length(),r=numRows;if(r==1||r>=n){return s;}StringBuffer[] mat=new StringBuffer[r];for(int i=0;i<r;i++){mat[i]=new StringBuffer();}for(int i=0,x=0,t=2*r-2;i<n;i++){mat[x].append(s.charAt(i));if(i%t<r-1){//每一个数组框其实代表着每一行所需要打印的数据++x;}else{--x;}}StringBuffer ans=new StringBuffer();for(StringBuffer row:mat){ans.append(row);}return ans.toString();}
}

 

4.外观数列

. - 力扣(LeetCode)

class Solution {public String countAndSay(int n) {String str="1";for(int i=2;i<=n;i++){StringBuffer stringBuffer=new StringBuffer();int start=0;int pos=0;//11//while(pos<str.length()){int m=0;while(pos<str.length()&&str.charAt(pos)==str.charAt(start)){pos++;m++;}stringBuffer.append(Integer.toString(m)).append(str.charAt(start));start=pos;}str=stringBuffer.toString();} return str;}}

5.数青蛙

1419. 数青蛙 - 力扣(LeetCode)

class Solution {public int minNumberOfFrogs(String croakOfFrogss) {char[] croakOfFrogs=croakOfFrogss.toCharArray();//用数组模拟一个哈希表String t="croak";int n=t.length();int[] count=new int[n];Map<Character,Integer> map=new HashMap<>();//[字符x,x对应的下标]for(int i=0;i<n;i++){map.put(t.charAt(i),i);}for(char ch:croakOfFrogs){if(ch==t.charAt(0)){if(count[n-1]!=0){count[n-1]--; }count[0]++;}else{int i=map.get(ch);if(count[i-1]==0){return -1;}else{count[i-1]--;count[i]++;}}}//还要遍历数组看k前面的数字是否为0for(int i=0;i<n-1;i++){if(count[i]!=0){return -1;}}return count[n-1];}
}

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

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

相关文章

Processing入门教程

目录&#xff1a; 课程前言认识PROCESSING 关于像素图形代码色彩与填充练习交互关于setup()和draw()第一次进行移动进一步复杂的交互操作代码实现如下&#xff1a;进一步了解PROCESSING 变量使用变量系统内置变量条件语句逻辑运算符循环语句while循环for循环结构化 函数实参对…

Selenium IDE 的使用指南

Selenium IDE 的使用指南 在自动化测试的领域中&#xff0c;Selenium 是一个广为人知且强大的工具集。而 Selenium IDE 作为其中的一个组件&#xff0c;为测试人员提供了一种便捷且直观的方式来创建和执行自动化测试脚本。 一、Selenium IDE 简介 Selenium IDE 是一个用于录…

驱动保险业高质量发展 金融壹账通“保险+科技”输出“数字化红利

近日&#xff0c;金融监管总局局长李云泽在陆家嘴论坛指出&#xff0c;将推动保险业坚持内涵式发展、特色化经营和精细化管理&#xff0c;加快由追求速度和规模&#xff0c;向以价值和效益为中心转变&#xff1b;引导保险机构树立正确的经营观、业绩观、风险观&#xff0c;完善…

出现 ORA-00923: FROM keyword not found where expected 解决方法

目录 1. 问题所示2. 原理分析3. 解决方法1. 问题所示 服务驱动的时候,一开始弹出这个Bug,找了很久才找到问题所在 2024-06-25 18:39:13.809 | ERROR 1926765 | Druid-ConnectionPool-Create-1203111075

pbootcms提交留言成功后跳转到指定的网址

pbootcms在线留言表单提交成功后&#xff0c;如何跳转到指定的网址&#xff0c;默认提交留言后留在原来的页面&#xff0c;如果提交后需要跳转到指定网址&#xff0c;我们需要对文件进行修改。首先我们打开/core-/function/helper.php文件找到第162行左右代码&#xff1a; ech…

基于STM32的简易智能家居设计

一、项目功能概述 1、OLED显示温湿度、空气质量&#xff0c;并可以设置报警阈值 2、设置4个继电器开关&#xff0c;分别控制灯、空调、开关、风扇 3、设计一个离线语音识别系统&#xff0c;可以语音控制打开指定开关、并且可以显示识别命令词到OLED屏上 4、OLED实时显示&#…

JavaScript小记_如何获取对象的属性?

1. 什么是对象? 多个数据的封装体用来保存多个数据的容器一个对象代表现实中的一个事物 2. 对象的组成 属性: 属性名(字符串)和属性值(任意)组成方法: 一种特别的属性(属性值是函数) 3. 如何访问对象内部数据? .属性名: 编码简单, 属性名由特殊符号组成时不能用[属性名]…

ASUS/华硕幻14 2023 GA402X系列 原厂Windows11-22H2系统

安装后恢复到您开箱的体验界面&#xff0c;带原机所有驱动和软件&#xff0c;包括myasus mcafee office 奥创等。 最适合您电脑的系统&#xff0c;经厂家手调试最佳状态&#xff0c;性能与功耗直接拉满&#xff0c;体验最原汁原味的系统。 原厂系统下载网址&#xff1a;http:…

Camera Raw:编辑 - 曲线

Camera Raw “编辑”模块中的曲线 Curve面板提供了曲线这一强大的工具&#xff0c;通过精确控制亮度和对比度&#xff0c;以及调整红、绿、蓝通道的曲线&#xff0c;可以显著提升图像的视觉效果和色彩表现。这些调整工具为摄影师和图像编辑者提供了丰富的创意可能性&#xff0c…

【JS】AI总结:JavaScript中常用的判空方法

在JavaScript中&#xff0c;判空是一个常见的操作&#xff0c;因为变量可能未定义、未初始化或包含特定的空值。以下是JavaScript中常用的判空方法&#xff1a; 使用if语句直接判断&#xff1a; 如果变量是null、undefined、0、NaN、空字符串&#xff08;""&#xff…

在Ubuntu 14.04上安装和配置Elasticsearch的方法

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 简介 Elasticsearch 是一个用于实时分布式搜索和数据分析的平台。它因易用性、强大功能和可扩展性而备受欢迎。 Elasticsearch 支持 R…

热管的制作工艺流程

1、什么是热管&#xff0c;热管的起源和发展 热管技术早在1942年前就已出现&#xff0c;当时Perkins发明并改进了热虹吸管&#xff08;一种简单的重力热管&#xff09;。1942年后&#xff0c;Gaugler提出了现代热管的原理&#xff0c;但未实际应用。直到1963年在位于美国的Los…

Vue解决父子组件传值,子组件改变值后父组件的值也改变的问题

vue开发过程中&#xff0c;父组件通过props传值给子组件&#xff0c;子组件在页面展示父组件的值&#xff0c;在操作子组件值以后&#xff0c;即使不点击确定按钮&#xff0c;父组件中的值也发生了变化&#xff0c;但是需求是操作子组件数据以后&#xff0c;必须点击"确定…

C# 中 MessageBox 定时关闭

C# 中 MessageBox 定时关闭 WPF中 System.Windows.Forms 的 MessageBox 并未提供定时关闭的功能&#xff0c;所以要实现此目标&#xff0c;需添加一些其他代码&#xff0c;如定时监控等。 需求说明&#xff1a; 弹出提示框后若一定时间内未点击此提示框&#xff0c;则其自动…

【信息系统项目管理师知识点速记】项目管理实践模型

20.5 项目管理实践模型 随着项目管理理论和实践在全球范围内的不断发展和积累,多个组织开发并发布了项目管理的最佳实践集合,其中得到广泛使用的是CMMI模型和PRINCE2模型,用于指导各个领域组织的项目管理活动。利用CMMI模型和PRINCE2模型的最佳实践,能够迅速将项目管理者的…

【AI提升】AI利器Tool Call/Function Call(一):langchain+ollama+llama3/qwen2

1、使用AI的一个常用场景就是&#xff0c;接收人类的语言&#xff0c;识别人类的意图&#xff0c;最终进行相关的业务处理&#xff0c;这就是设计Tool Call / Function Call的初衷。 2、现在一般都说Tool Call&#xff0c;以前常叫Function Call&#xff0c;不要纠结。 一、安…

探索 .NET 基准测试库(BenchmarkDotNet)

基准测试是软件开发中的一项重要实践&#xff0c;它允许开发人员测量和比较不同代码段的性能。在 .NET 中&#xff0c;最流行的基准测试库之一是 BenchmarkDotNet。这里将介绍 BenchmarkDotNet&#xff0c;解释它为何必不可少&#xff0c;并提供分步示例来帮助您入门。 什么是…

程序猿大战Python——实现简单的图书馆系统操作

步骤1&#xff1a;安装和导入库 首先&#xff0c;确保已经安装了 pymysql 库。如果没有安装&#xff0c;请执行以下命令&#xff1a; pip install pymysql 然后&#xff0c;导入必要的库&#xff1a; import pymysql 步骤2&#xff1a;创建数据库和表的函数 编写一个函数来…

MySQL 重要参数优化

max_connections = 3000 innodb_buffer_pool_size = 8G max_allowed_packet = 32M innodb_file_io_threads = 8 innodb_thread_concurrency = 16 innodb_flush_log_at_trx_commit = 2 innodb_log_buffer_size = 16M 参数说明 max_connections = 3000 运行MySQL的最大连…

2-19 基于matlab的薄板弯曲的算例

基于matlab的薄板弯曲的算例&#xff0c;利用有限元方法编制matlab程序。对二维薄板进行单元化&#xff0c;输出薄板结构参数及载荷&#xff0c;输出弯曲情况&#xff0c;并可视化展示。程序已调通&#xff0c;可直接运行。 2-19 薄板弯曲 有限元方法 薄板结构参数 - 小红书 (x…