433. 最小基因变化(Queue使用ArrayList和LinkedList进行声明)
这道题可以看成一个24叉树。
因为基因序列长度固定为8,且每个位置的字母固定是AGCT,可以选择改变的只有3个字母,所以一次最多24种情况。
然后检查变化后的结果是否存在bank
中(使用hashSet
来存储),同时设置一个visited
集合来检查是否访问过。
class Solution {public int minMutation(String startGene, String endGene, String[] bank) {if (startGene.equals(endGene))return 0;char[] keys = { 'A', 'G', 'C', 'T' };Set<String> cnt = new HashSet<>();Set<String> visited = new HashSet<>();for (String str : bank) {cnt.add(str);}if (!cnt.contains(endGene))return -1;Queue<String> q = new ArrayDeque<>();q.offer(startGene);visited.add(startGene);int step = 1;while (!q.isEmpty()) {int size = q.size();for (int i = 0; i < size; ++i) {String curr = q.poll();for (int u = 0; u < 8; ++u) {for (int v = 0; v < 4; ++v) {if (keys[v] != curr.charAt(u)) {StringBuffer sb = new StringBuffer(curr);sb.setCharAt(u, keys[v]);String next = sb.toString();if (!visited.contains(next) && cnt.contains(next)) {if (next.equals(endGene))return step;visited.add(next);q.offer(next);}}}}}++step;}return -1;}
}
拓展:Queue使用ArrayList和LinkedList进行声明的区别
在Java中,Queue可以使用ArrayList和LinkedList进行声明。这两种数据结构在实现Queue时有一些区别。
使用ArrayList声明Queue的区别:
-
底层数据结构:
- ArrayList基于动态数组实现,它可以动态增长和缩小。
- 插入和删除元素可能涉及重新分配内存和数据复制。
-
适用场景:
- 当需要随机访问队列中的元素时,ArrayList是更好的选择,因为它支持通过索引直接访问元素。
- 如果需要频繁对队列进行随机访问、而且对队列的修改操作相对较少时,可以考虑使用ArrayList实现Queue。
使用LinkedList声明Queue的区别:
-
底层数据结构:
- LinkedList基于双向链表实现,每个元素都指向前一个和后一个元素。
- 插入和删除元素的时间复杂度为O(1),因为只需要调整指针而不需要大量数据的搬移。
-
适用场景:
- 当需要频繁对队列进行插入、删除操作时,LinkedList是更好的选择,因为它的插入和删除操作效率更高。
- 如果队列的操作主要是在两端进行(即头部和尾部),比如经常需要在队列头部和尾部进行插入、删除操作,可以考虑使用LinkedList实现Queue。
综合考虑:
- 如果对队列中的元素进行频繁的随机访问,可以选择ArrayList实现Queue。
- 如果对队列中的元素进行频繁的插入、删除操作,可以选择LinkedList实现Queue。
在实际应用中,需要根据具体的场景和需求来选择合适的数据结构来实现Queue。
相关文章:
433. 最小基因变化(Queue使用ArrayList和LinkedList进行声明)
这道题可以看成一个24叉树。 因为基因序列长度固定为8,且每个位置的字母固定是AGCT,可以选择改变的只有3个字母,所以一次最多24种情况。 然后检查变化后的结果是否存在bank中(使用hashSet来存储),同时设置…...
MYSQL双主节点–更换ip
MYSQL双主节点–更换ip 一、更换双主节点ip 1.停止mysql服务 #安装了supervisor supervisorctl stop mysql #未安装 systemctl stop mysqld2.修改网卡配置信息 注:ens33是网卡名称,可能网卡不叫ens33 vi /etc/sysconfig/network-scripts/ifcfg-ens333…...
一文玩转Go语言中的面向对象编程~
温故而知新:什么是面向对象 面向对象(Object-Oriented)是一种计算机编程的方法和思想,它将程序中的数据(对象)和操作(方法)组织成一个个相互关联和交互的对象。对象是现实世界中的事…...
kylin集群反向代理(健康检查)
前面一篇文章提到了使用nginx来对kylin集群进行反向代理, kylin集群使用nginx反向代理-CSDN博客文章浏览阅读349次,点赞8次,收藏9次。由于是同一个集群的,元数据没有变化,所以,直接将原本的kylin使用scp的…...
【docker】centos7安装harbor
目录 零、前提一、下载离线包二、安装三、访问四、开机自启 零、前提 1.前提是已经安装了docker和docker-compose 一、下载离线包 1. csdn资源:harbor-offline-installer-v2.10.0.tgz 2. 百度云盘(提取码:ap3t):harbo…...
2024 年 1 月安全更新修补了 58 个漏洞(Android )
谷歌发布了针对 Android 平台 58 个漏洞的补丁,并修复了 Pixel 设备中的 3 个安全漏洞,拉开了 2024 年的序幕。 Android 2024 年 1 月更新的第一部分以 2024 年 1 月 1 日安全补丁级别发布在设备上,解决了框架和系统组件中的 10 个安全漏洞&…...
数据库系统概念 第七版 中文答案 第3章 SQL介绍
3.1 将以下查询使用SQL语言编写,使用大学数据库模式。 (我们建议您实际在数据库上运行这些查询,使用我们在书籍网站db-book.com上提供的示例数据。有关设置数据库和加载示例数据的说明,请参阅上述网站。) a. 查找计算机…...
什么是数通技术?以太网交换机在数通技术中的精要
什么是数通技术? 数通技术是指数字通信技术,它涵盖了数字信号处理、数据传输、网络通信等领域。通信工程师在数通技术中负责设计、建设和维护数字通信系统,以实现可靠、高效的信息传输。这涉及到数字信号的编解码、调制解调、数据压缩、网络…...
php 的数学常用函数
目录 1.常用列表 2.代码示例 1.常用列表 函数名描述输入输出abs()求绝对值数字绝对值数字ceil()进一法取整浮点数进一取整floor()舍去法求整浮点数直接舍去小数部分fmod()浮点数取余 两个浮点 数,x>y 浮点余数 pow()返回数的n次方基础数n次方乘方值round()浮点数四舍五入…...
Netty-Netty组件了解
EventLoop 和 EventLoopGroup 回想一下我们在 NIO 中是如何处理我们关心的事件的?在一个 while 循环中 select 出事 件,然后依次处理每种事件。我们可以把它称为事件循环,这就是 EventLoop 。 interface io.netty.channel. EventLoo…...
银行的压力测试如何进行?
为什么要进行压力风险测试? 压力风险测试的最终目的是测试银行在极度恶劣的市场环境中是否有足够的资本维持运转。 题主链接中的一级资本充足率(Tier 1 capital ratio) 亦即衡量标准,这个数字越大,表明银行资本约充裕,可以在停止…...
QtService、托盘程序使用
1、QtService 使用QtService实现Qt后台服务程序 用QT创建一个Windows Service以及踩到的若干坑 2、托盘程序 Qt之程序最小化托盘显示及操作 Qt系统托盘程序的实现...
使用Linux防火墙管理HTTP流量
在Linux系统中,防火墙是用于控制网络流量的重要工具。通过防火墙,你可以根据需要限制、过滤或允许特定的网络流量,从而提高系统的安全性。在处理HTTP流量时,防火墙可以帮助你实施访问控制、流量监控和其他安全策略。 iptables i…...
图鸟引入多套字体图标的方式教程
https://www.yuque.com/tuniao/qunyou/tgfvpg ①上传icon,生成iconfont.css 将css文件放这里 app.vue全局引入 适当改造iconfont.css的写法,方便调用...
在openEuler环境下快速编译GreatSQL RPM包
在上一篇中,已经介绍了在CentOS环境下编译GreatSQL RPM包的过程,本文再介绍如何在openEuler环境下编译GreatSQL RPM包。 运行环境是docker中的openEuler 22.03 x86_64: $ docker -v Docker version 20.10.10, build b485636$ docker run -itd…...
C语言基础语法跟练 day3
31、不使用累计乘法的基础上,通过移位运算(<<)实现2的n次方的计算。 #include <stdio.h> int main() {int i 0;scanf("%d",&i);printf("%d",1<<i);return 0; } 32、问题:一年约有 3.…...
【控制篇 / 策略】(7.4) ❀ 01. IP地理位置数据库和地理地址对象 ❀ FortiGate 防火墙
【简介】在很多使用环境下,我们需要对指定国家的IP地址进行允许或禁止访问操作,例如只允许访问国内IP。以前只能手动添加IP地址对象到地址组,繁杂且效率低下,Fortinet提供了基于地理位置的IP库,就可以解决这个问题。 I…...
NX二次开发点通过云配准获取相同体
先找到体的参考方向(这个参考方向对于相同体重合之后是相同的),这个时候我们的思路是三个不共线的点确定一个坐标系,然后和绝对方向求转换矩阵。然后获取体的所有边的几何中心,把这些点通过转换矩阵转换之后存起来&…...
5.4 Android BCC环境搭建(eadb版 下)
四,BCC使用示例 这里以tcplife为例,来显示TCP会话的生命周期和吞吐量统计。 4.1 进入/bcc/tools目录 root@localhost:/bcc# cd tools/ root@localhost:/bcc/tools# ls CMakeLists.txt javacalls.sh rubystat_example.txt argdist.py javacalls_e…...
【AI视野·今日Robot 机器人论文速览 第七十四期】Wed, 10 Jan 2024
AI视野今日CS.Robotics 机器人学论文速览 Wed, 10 Jan 2024 Totally 17 papers 👉上期速览✈更多精彩请移步主页 Daily Robotics Papers Hold em and Fold em: Towards Human-scale, Feedback-Controlled Soft Origami Robots Authors Immanuel Ampomah Mensah, Je…...
服务端性能测试——性能测试工具JMeter-L1
第一遍没学懂,后续文章会更新~ 目录: 1.JMeter介绍与安装Meter简介JMeter安装2.JMeter的运行JMeter运行、界面功能简介3.使用代理服务器录制请求录制压测脚本(一)Web端脚本录制方法4.测试计划5.线程组6.控制器7.JMeter采样器/取…...
C# OpenCvSharp DNN FreeYOLO 目标检测
目录 效果 模型信息 项目 代码 下载 C# OpenCvSharp DNN FreeYOLO 目标检测 效果 模型信息 Inputs ------------------------- name:input tensor:Float[1, 3, 192, 320] --------------------------------------------------------------- Outp…...
U盘启动安装win11遇到缺少计算机所需的介质驱动程序问题
一、使用U盘制作启动盘遇到问题 下载了windows原版镜像,验证了md5,确保文件没有损坏。使用ultroiso制作u盘启动盘,开始安装后出现下图的报错: 在网上搜索解决方案,主要有以下几种: 安装的时候,…...
正则表达式、文件访问(Python实现)
一、主要目的: 1.了解正则表达式的基本概念和处理过程。 2.掌握使用正则表达式模块 Re 进行字符串处理的方法。 3.了解文件的基本概念和类型。 4.掌握在 Python 中访问文本文件的方法和步骤。 5.熟悉在 Python 中访问二进制文件的方法和步骤。 二、主要内容和结…...
ES高级查询
ES中提供了一种强大的检索数据方式,这种检索方式称为Query DSL,这种方式的丰富查询语法让ES检索变得更强大,更简洁。 1.常见查询 1.1查询所有[match_all] match_all关键字:返回索引中的全部文档。 GET /products/_search { &…...
RT-Thread入门笔记6-空闲线程及两个常用的钩子函数
空闲线程 空闲线程是一个比较特殊的系统线程,它具备最低的优先级。当系统中无其他就绪线程可运行时,调度器将调度到空闲线程。 空闲线程还负责一些系统资源回收以及将一些处于关闭态的线程从线程调度列表中移除的动作 空闲线程在形式上是一个无线循环结…...
网络正常运行时间监控工具
正常运行时间是衡量系统可靠性的指标,表示为机器工作和可用时间的百分比。当提到 IT 网络时,正常运行时间是衡量网络设备、网站和其他服务的可用性的指标。网络正常运行时间通常以百分位数来衡量,例如“五个 9”,这意味着系统在 9…...
DEJA_VU3D - Cesium功能集 之 112-获取圆节点(1)
前言 编写这个专栏主要目的是对工作之中基于Cesium实现过的功能进行整合,有自己琢磨实现的,也有参考其他大神后整理实现的,初步算了算现在有差不多实现小140个左右的功能,后续也会不断的追加,所以暂时打算一周2-3更的样子来更新本专栏(每篇博文都会奉上完整demo的源代码…...
Matlab 建文件夹保存本次仿真图表数据和参数
文章目录 前言代码 前言 有时候跑的仿真参数非常多,保存结果的时候需要把仿真参数和数据一起保存,为方便起见,查了一下怎么建文件夹自动保存本次仿真图表数据和参数,再也不用担心忘记结果是什么参数跑出来的了~ 代码 % 定义变量…...
@JsonFormat与@DateTimeFormat
JsonFormat注解很好的解决了后端传给前端的格式,我们通过使用 JsonFormat可以很好的解决:后台到前台时间格式保持一致的问题 其次,另一个问题是,我们在使用WEB服务的时,可 能会需要用到,传入时间给后台&am…...
购物网站的搜索功能是怎么做的/做网站怎么优化
前端的主要任务: 1)信息展示; 2)用户交互(事件处理)。 1)移动端开发总体遵循MVC模式; 2)移动端UI包含:(1)UI组件(基本组件…...
专业网站托管的公司/上海最大的seo公司
2019独角兽企业重金招聘Python工程师标准>>> eclipse-jee-kepler-SR1升级SR2。 报:eclipse.exe can not remove。 可能原因:杀毒软件、操作系统安全等原因导致文件无法被更改 解决办法:打开eclipse之后,把eclipse.exe改…...
比较好的设计欣赏网站/中国500强最新排名
纵有疾风来 人生不言弃。 前情回顾 【SpringBoot深入理解源码】之自定义系统初始化器 【SpringBoot深入理解源码】之系统监听器 文章目录IOC思想Bean的配置方式XML注解源码解读refresh方法Bean实例化解析IOC思想 Spring对Bean的管理就是IOC思想的体现。 耦合性灵活性可维护性…...
创做网站/电商推广和网络推广的区别
Heres an action item for you, dear reader, and finally a decent reason to put your USB key to work other than just holding family photos. 亲爱的读者,这是为您准备的一项行动,最后一个体面的理由是使USB密钥可以正常工作,而不仅仅…...
移动网站建设规定/沈阳seo排名外包
写在前面的话:自用侵删致谢,图片来自中国大学,国防科技大学老师开设的编译原理。 推荐大家看看!!! 几个概念: V*与V 的区别:如果V中原来没有空字,闭包中会包含空字&#…...
什邡市建设局门户网站/免费建站平台哪个好
2021年的互联网行业竞争越来越严峻,面试也是越来越难,一直以来我都想整理一套完美的面试宝典,奈何难抽出时间,这套1000道的Java面试手册我整理了整整1个月,上传到Git上目前star数达到了30K 这套互联网Java工程师面试题…...