【Java 优选算法】模拟
欢迎关注个人主页:逸狼
创造不易,可以点点赞吗~
如有错误,欢迎指出~
模拟算法的思路比较简单,根据题目描述列出流程,找出规律,将流程转化为代码
替换所有的问号
题目链接

解法
直接根据题目给出条件模拟 示例,找出规律
1.先找出字符?,再让满足条件的字符ch替换 字符?,该条件为(字符? != 前一个字符) 并且 (字符? != 后一个字符) ,
在代码中就是(s[i - 1] != ch) && ( s[i + 1] != ch)
2.处理边界情况 : 当字符? 处在0下标处时,因为没有前一个字符,所以可以直接满足第一个条件
同理当字符? 处在n-1下标处时,因为没有后一个字符,所以可以直接满足第二个条件
在代码中就是(i == 0 || s[i - 1] != ch) && (i == n - 1 || s[i + 1] != ch)
画图举例


代码
class Solution {public String modifyString(String ss) {char[] s = ss.toCharArray();int n = s.length;for (int i = 0; i < n; i++) {if (s[i] == '?') {// 替换for (char ch = 'a'; ch <= 'z'; ch++) {if ((i == 0 || s[i - 1] != ch) && (i == n - 1 || s[i + 1] != ch)) {s[i] = ch;break;}}}}return String.valueOf(s);}
}
提莫攻击
题目链接

解法
找出规律 当时间间隔x>=d时,结果ret+d,当x<d时,ret+x
画图举例

代码
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;}}return ret + duration;//最后一次攻击,加上完整的中毒时间}
}
N字形变换
题目链接

解法

解法1: 利用数组模拟过程,按顺序一个个填入数组,再按要求输出

解法2: 在解法1的基础上找规律,将要输出的字符串分为3段, 在第一行中, 找到第一个字符和第二个字符的公差d = 2n - 2
- 第一段: 第一行;第一个放在0下标位置,第二个0+d,依次类推
- 第二段:中间的k行;以每两个为一组,第一组分别是k和d-k,后面依次+d
- 第三段:最后一行;第一个是n-1位置,后面依次+d
注意边界情况 当n =1 时,直接输出原字符串
规律如下图
代码
class Solution {public String convert(String s, int numRows) {// 处理边界情况numRows=1if (numRows == 1)return s;int d = 2 * numRows - 2, n = s.length();StringBuilder ret = new StringBuilder();// 处理第一行for (int i = 0; i < n; i += d) {ret.append(s.charAt(i));}// 处理中间k行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.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();}
}
外观数列
题目链接

解法
模拟+ 双指针

举例如下图数组nums, 定义left=0,right=0,
- 当nums[left]==nums[right]时,right向后移动,直到不相等,
- 此时先拼接3的次数即right - left次,
- 再拼接该字符,依次类推

代码
class Solution {public String countAndSay(int n) {String ret = "1";for(int i = 1; i < n; i++){//从第一行开始,描述n-1次即可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;}
}
数青蛙
题目链接

解法
借用hash表用来时刻记录每个字符的出现情况
例如字符串crcoakroakcroak,从前往后扫描,以下为模拟过程
- 0位置字符为c,操作为c个数+1 ,
- 1位置字符为r,需要确认前面的字符是否有字符c,操作即为c个数-1,r个数+1
- 2位置字符为c,此时操作为c个数+1
- 重复以上操作,直到k的数为2(代表此时有两只青蛙)
- 最后一声croak可以叫前面2只的其中一只重复叫的(因为题目要求返回最少青蛙数), 此时操作 k - 1
- 当扫描到第三个k时, k+1, 最终返回 2

代码
class Solution {public int minNumberOfFrogs(String croakOfFrogs) {char[] c =croakOfFrogs.toCharArray();String t = "croak";int n = t.length();int[] hash = new int[n];//数组模拟哈希表Map<Character, Integer> index = new HashMap<>();//<x,x字符对应的下标>for(int i = 0; i < n; i++){index.put(t.charAt(i), i);}for(char ch : c){if(ch == t.charAt(0)){if(hash[n - 1] != 0) hash[n - 1]--;hash[0]++;}else{int i = index.get(ch);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];}
}
相关文章:
【Java 优选算法】模拟
欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 模拟算法的思路比较简单,根据题目描述列出流程,找出规律,将流程转化为代码 替换所有的问号 题目链接 解法 直接根据题目给出条件模拟 示例,找出规律 1.先找出字符?,再…...
@RequiredArgsConstructor 和 @Autowired区别
1、注入方式 RequiredArgsContructor:通过构造函数的方式实现依赖注入。该注解会被final修饰,并将依赖对象通过构造参数进行注入。 Autowired:通过属性注入的方式实现依赖注入,将依赖对象自动注入到被该注解的字段上 2、使用场景…...
【Linux网络】数据链路层 其他常见的协议
目录 1. 认识以太网 2. 以太网帧格式 3. MTU 4. ARP协议 4.1 ARP数据报的格式 4.2 ARP攻击 5. 其他重要的协议或技术 5.1 DNS协议 5.2 ICMP协议 5.3 NAT技术 5.4 代理服务器 5.5 内网穿透 总结 针对数据在网络传输中所遇到的问题,网络协议栈都对相应的…...
C语言综合案例:学生成绩管理系统
C语言综合案例:学生成绩管理系统 需求 1.存储最多50名学生的信息(不使用结构体) 2.每个学生包含: 学号(字符数组)姓名(字符数组)3门课程成绩(一维数组) …...
Ubuntu 安装 Nginx并配置反向代理
Ubuntu版本:Ubuntu 24.04.2 LTS 一、安装Nginx 更新系统软件包 安装前需确保系统处于最新状态,避免依赖冲突 sudo apt update && sudo apt upgrade -y 安装Nginx主程序 Ubuntu官方仓库已包含稳定版Nginx,直接安装即可 sudo…...
赋能农业数字化转型 雏森科技助力“聚农拼”平台建设
赋能农业数字化转型,雏森科技助力“聚农拼”平台建设 在数字化浪潮席卷各行业的今天,农业领域也在积极探索转型升级之路。中农集团一直以“根植大地,服务三农”为核心,以“乡村振兴,农民增收”为目标,及时…...
安全面试5
文章目录 sql的二次注入在linux下,现在有一个拥有大量ip地址的txt文本文档,但是里面有很多重复的,如何快速去重?在内网渗透中,通过钓鱼邮件获取到主机权限,但是发现内网拦截了tcp的出网流量,聊一…...
halcon三维点云数据处理(二十六)reduce_object_model_3d_to_visible_parts
目录 一、reduce_object_model_3d_to_visible_parts代码第一部分二、reduce_object_model_3d_to_visible_parts代码第二部分三、reduce_object_model_3d_to_visible_parts代码第三部分四、reduce_object_model_3d_to_visible_parts代码第四部分五、效果图一、reduce_object_mod…...
1. HTTP 数据请求
相关资源: 图片素材📎图片素材.zip 接口文档 1. HTTP 数据请求 什么是HTTP数据请求: (鸿蒙)应用软件可以通过(鸿蒙)系统内置的 http 模块 和 Axios,通过 HTTP 协议和服务器进行通讯 学习核心Http请求技术: Http模块 - 属于鸿…...
MySQL表空间管理
表空间的定义 表空间是数据库用来管理数据库中的表、索引、列等数据对象的一个逻辑意义上的容器,与表空间在物理层对应的是一个一个的具体的数据文件。管理员直接在逻辑上操作一个一个表或者索引等对象,具体的数据文件的调整则由数据库的存储引擎层来…...
VSCode轻松调试运行.Net 8.0 Web API项目
1.背景 我一直都是用VS来开发.NetCore项目的,用的比较顺手,也习惯了。看其他技术文章有介绍VS Code更轻量,更方便。所以我专门花时间来使用VS Code,看看它是如何调试代码、如何运行.Net 8.0 WebAPI项目。这篇文章是一个记录的过程…...
Tailwind CSS_现代 Web 开发的实用指南
1. 引言 1.1 Tailwind CSS 概述 什么是 Tailwind CSS? Tailwind CSS 是一种低级优先级的实用工具优先(utility-first)CSS 框架,它提供了一组灵活的基础类来构建自定义设计。与传统的 CSS 框架不同,Tailwind 不提供预设的组件样式或布局,而是通过组合简单的 CSS 类来实…...
【FAQ】HarmonyOS SDK 闭源开放能力 —Push Kit(9)
1.问题描述: 通过push token向鸿蒙手机推送一条通知,收到通知后,通知右侧不展示图片。 解决方案: 检查一下是否存在图片风控:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-image-co…...
2024年国赛高教杯数学建模D题反潜航空深弹命中概率问题解题全过程文档及程序
2024年国赛高教杯数学建模 D题 反潜航空深弹命中概率问题 原题再现 应用深水炸弹(简称深弹)反潜,曾是二战时期反潜的重要手段,而随着现代军事技术的发展,鱼雷已成为现代反潜作战的主要武器。但是,在海峡或…...
将宇宙不同温度下的能量表现形式 类比为量子计算机的波函数解码过程
以下是基于您提出的核心观点(将宇宙不同温度下的能量表现形式类比为量子计算机的波函数解码过程)撰写的论文框架设计,包含创新性理论与跨学科研究方法: --- **标题** 《量子信息视角下的宇宙热力学:从普朗克温度到…...
矩阵 trick 系列 题解
1.AT_dp_r Walk(矩阵图论) 题意 一个有向图有 n n n 个节点,编号 1 1 1 至 n n n。 给出一个二维数组 A 1... n , 1... n A_{1...n,1...n} A1...n,1...n,若 A i , j 1 A_{i,j}1 Ai,j1 说明节点 i i i 到节点 j j j …...
obj离线加载(vue+threejs)+apk方式浏览
demo需求:移动端,实现obj本地离线浏览 结合需求,利用(vue2threejs173)进行obj的加载,然后采用apk方式(hbuilderX打包发布)移动端浏览; https://github.com/bianbian886/…...
关于mysql 表中字段存储JSON对象对JSON对象中的bolean字段进行查询的方式
业务场景如题 JSON对象为 表为客诉表中的 发现利用原有的xml中的 and a1.order_list ->‘$[*].isZg’ request.isZg 后续发现需要更改为有效 本文作为自己日常工作记录用,有遇到相同问题的可以作为参考。...
WordPress Course Booking System SQL注入漏洞复现 (CVE-2025-22785)(附脚本)
免责申明: 本文所描述的漏洞及其复现步骤仅供网络安全研究与教育目的使用。任何人不得将本文提供的信息用于非法目的或未经授权的系统测试。作者不对任何由于使用本文信息而导致的直接或间接损害承担责任。如涉及侵权,请及时与我们联系,我们将尽快处理并删除相关内容。 0x0…...
Kylin麒麟操作系统 | 系统监控
以下所使用的环境为: 虚拟化软件:VMware Workstation 17 Pro 麒麟系统版本:Kylin-Server-V10-SP3-2403-Release-20240426-x86_64 一、系统状态查询工具 1. 静态显示系统进程信息ps ps命令会生成一个静态列表,列表中显示的进程其…...
vLLM服务设置开机自启动(Linux)
要在开机时进入指定的 conda 环境并启动此 vllm 服务,您可以通过以下步骤设置一个 systemd 服务来自动执行脚本。 一、第一步:创建一个启动脚本 1.打开终端并创建启动脚本,例如 /home/username/start_vllm.sh(请替换 username 为…...
MongoDB#Code和Function
背景 在MongoDB Shell中, 使用db.system.js.inertOne 新增一个自定义函数后,读取值类型显示Code Class,该如何使用?Code类型和Function能互相转换吗? 实践 // 保存一个函数到 system.js 集合 db.system.js.insertOne({_id: &qu…...
MT-Metrics
MT-Metrics 是一类用于评估生成文本质量的指标,最初用于机器翻译任务,后来扩展到生成任务(如对话生成、文本摘要等)。它的核心思想是通过比较生成文本与参考文本之间的相似性(如词汇重叠、句法结构、语义相似性&#x…...
几个api
几个api 原型链 可以阅读此文 Function instanceof Object // true Object instanceof Function // true Object.prototype.isPrototypeOf(Function) // true Function.prototype.isPrototypeOf(Object) // true Object.__proto__ Function.prototype // true Function.pro…...
数字IC后端设计实现OCC(On-chip Clock Controller)电路介绍及时钟树综合案例
数字IC后端时钟树综合专题(OCC电路案例分享) 复杂时钟设计时钟树综合(clock tree synthesis)常见20个典型案例 1、什么是OCC? 片上时钟控制器(On-chip Clock Controllers ,OCC),也称为扫描时钟控制器(Scan Clock Con…...
SurfaceFlinger代码笔记
drawLayers是做client合成,合成完以后的buffer会放在RenderSurface里 FrameBufferSurface里的buffer是通过setClientTarget给到HWC的(HWC应该给client合成的buffer留了一个slot) Output.cpp这个文件非常关键,代表着具体一个Display的操作 d…...
Trae根据原型设计稿生成微信小程序密码输入框的踩坑记录
一、需求描述 最近经常使用Trae生成一些小组件和功能代码(对Trae赶兴趣的可以看之前的文章《TraeAi上手体验》),刚好在用uniapp开发微信小程序时需要开发一个输入密码的弹框组件,于是想用Trae来实现。原型设计稿如下:…...
软件测试丨Docker与虚拟机架构对比分析
Docker 与虚拟机(VM)在架构上有显著区别,主要体现在资源利用、性能、隔离性和启动时间等方面。以下是两者的主要架构区别: 1. 架构层次 Docker: 主机操作系统:Docker 直接运行在宿主机的操作系统上。Docker 引擎&…...
在VsCode中选择conda编译器环境
当vscode出现始终在激活一个已经不存在的虚拟环境,可选择手动将其调换 在 Visual Studio Code (VSCode) 中选择 Python 虚拟环境的步骤如下: 确保安装了 Python 插件:首先,你需要确保已经安装了适用于 VSCode 的 Python 插件。你…...
微信小程序 - 条件渲染(wx:if、hidden)与列表渲染(wx:for)
一、条件渲染概述 条件渲染用于根据特定条件决定是否渲染某部分内容 微信小程序提供了两种方式实现条件渲染,分别是 wx:if、hidden 二、条件渲染 1、wx:if (1)基本介绍 wx:if 根据 condition 的真假决定是否渲染该组件及其子组件 condit…...


