LeetCode之图的广度优先搜索

news/2024/9/18 20:54:50/ 标签: 宽度优先, 算法

433. 最小基因变化

class Solution {public int minMutation(String start, String end, String[] bank) {// 将基因库存储在集合中,便于快速查找Set<String> bankSet = new HashSet<>(Arrays.asList(bank));// 如果目标基因不在基因库中,则直接返回 -1if (!bankSet.contains(end)) {return -1;}// 定义 BFS 队列Queue<String> queue = new LinkedList<>();queue.offer(start);// 记录变换的步骤int steps = 0;// 定义基因的四个可变字符char[] genes = {'A', 'C', 'G', 'T'};// 开始 BFS 遍历while (!queue.isEmpty()) {int size = queue.size();// 处理当前层的所有基因变化for (int i = 0; i < size; i++) {String currentGene = queue.poll();// 如果当前基因是目标基因,返回步骤数if (currentGene.equals(end)) {return steps;}// 生成可能的下一步基因for (int j = 0; j < currentGene.length(); j++) {for (char gene : genes) {if (gene != currentGene.charAt(j)) { // 只替换与当前基因不同的字符StringBuilder nextGene = new StringBuilder(currentGene);nextGene.setCharAt(j, gene); // 替换字符String newGene = nextGene.toString();// 如果新生成的基因在库中,加入队列并从银行中移除以避免重复if (bankSet.contains(newGene)) {queue.offer(newGene);bankSet.remove(newGene); // 以避免将来再访问}}}}}steps++; // 每层遍历结束,步数加 1}return -1; // 如果无法到达目标基因,返回 -1}
}


http://www.ppmy.cn/news/1523656.html

相关文章

【基础知识复习 - 随机练习题】

问题 1&#xff1a;在软件生命周期模型中&#xff0c;哪一个模型强调了开发过程的迭代性和反馈&#xff1f; A. 瀑布模型 B. V模型 C. 敏捷模型 D. 原型模型 答案&#xff1a;C. 敏捷模型 解析&#xff1a;敏捷模型强调迭代开发和反馈&#xff0c;允许在每个迭代周期中进行调…

鸿蒙轻内核M核源码分析系列二一 02 文件系统LittleFS

往期知识点记录&#xff1a; 鸿蒙&#xff08;HarmonyOS&#xff09;应用层开发&#xff08;北向&#xff09;知识点汇总 持续更新中…… 1、LFS文件系统结构体介绍 会分2部分来介绍结构体部分&#xff0c;先介绍LittleFS文件系统的结构体&#xff0c;然后介绍LiteOS-M内核中…

【C++】模拟实现vector

文章目录 前言成员变量 & 迭代器反向迭代器 空间管理函数成员函数构造函数默认构造拷贝构造 析构函数赋值操作符重载 元素访问元素修改迭代器失效问题模拟实现 总结 前言 模拟实现不是为了写得和库里面一样好。而是为了更好的了解底层&#xff0c;从而能够更熟练的使用这些…

Keras深度学习中文文本分类

一.文本分类概述 文本分类旨在对文本集按照一定的分类体系或标准进行自动分类标记&#xff0c;属于一种基于分类体系的自动分类。文本分类最早可以追溯到上世纪50年代&#xff0c;那时主要通过专家定义规则来进行文本分类&#xff1b;80年代出现了利用知识工程建立的专家系统&…

国庆出行要准备什么?这款骨传导耳机你一定不能错过!

在准备国庆假期的旅行计划时&#xff0c;大家可能正在考虑如何让旅途更加充实有趣&#xff0c;同时也注重个人健康和舒适度。选择一款适合旅行的耳机&#xff0c;不仅是对音乐品味的追求&#xff0c;更是对旅途品质的提升。 今天&#xff0c;我想给大家推荐一款我个人非常喜欢的…

SpringBoot 引用 ZXing 生成二维码 条形码

ZXing&#xff0c;全名为"Zebra Crossing"&#xff0c;是一个开源的Java 库&#xff0c;用于二维码的生成和解析。它是一个强大的工具&#xff0c;可以用于生成QR码以及解析包括QR码在内的多种二维码格式。ZXing提供了多种编程语言的API&#xff0c;使开发者能够轻松…

网络安全(黑客)入门到精通

不管你是小白还是工作已久 这份资料真的超级全面详细 几乎秒杀了市面上90%的自学资料 来&#xff0c;把它全灌输到脑子里&#xff0c;肯定对你会有很大的帮助&#xff01; 2024最新网络安全/渗透测试/运维安全学习资料&#xff08;全套视频&#xff0c;大厂面经&#xff0c;必备…

2024年P气瓶充装证模拟考试题库及P气瓶充装理论考试试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年P气瓶充装证模拟考试题库及P气瓶充装理论考试试题是由安全生产模拟考试一点通提供&#xff0c;P气瓶充装证模拟考试题库是根据P气瓶充装最新版教材&#xff0c;P气瓶充装大纲整理而成&#xff08;含2024年P气瓶…

OpengGL教程(二)---使用VAO和VBO方式绘制三角形

本章参考官方教程&#xff1a;learnopengl-cn VertexShader.glsl #version 330 core layout(location 0) in vec3 position; layout(location 1) in vec3 color; uniform mat4 projection; // 投影矩阵 out vec4 ourColor; void main() {gl_Position projection * vec4(p…

react js 路由 Router

完整的项目,我已经上传了 资料链接 起因, 目的: 路由, 这部分很难。 原因是, 多个组件,进行交互,复杂度比较高。 我看的视频教程 1. 初步使用 安装: npm install react-router-dom 修改 index.js/ 或是 main.js 把 App, 用 BrowserRouter 包裹起来 2. Navigate 点击…

前端计算机网络面试基础知识

http和https区别 http 超文本传输协议&#xff0c;运行在tcp协议上&#xff0c;指定了客户端和服务器的通信规则特点 支持C/S模式无连接、无状态&#xff0c;只需要发送路径和请求方法&#xff0c;快速灵活&#xff0c;允许传输任意类型对象 URL构成 http://[主机/ip][端口]…

毒枸杞事件启示录:EasyCVR视频AI智能监管方案如何重塑食品卫生安全防线

一、方案背景 近年来&#xff0c;食品安全问题频发&#xff0c;引发了社会各界的广泛关注。其中&#xff0c;毒枸杞事件尤为引人关注。新闻报道&#xff0c;在青海格尔木、甘肃靖远等地&#xff0c;部分商户为了提升枸杞的品相&#xff0c;违规使用焦亚硫酸钠和工业硫磺进行“…

苹果软件产品使用的 TCP 和 UDP 端口列表(apple、mac)

端口 TCP 或 UDP 服务或 协议名称1 RFC2 服务名称3 使用者 22 TCP Secure Shell (SSH)、SSH 文件传输协议 (SFTP) 和安全拷贝 (scp) 4253 ssh Xcode 服务器&#xff08;托管和远程 GitSSH&#xff1b;远程 SVNSSH&#xff09; 25 TCP 简单邮件传输协议 (SMTP) 5…

故障诊断迁移学习项目DDC(保姆教程)

本项目从零开始搭建深度领域混淆&#xff08;Deep Domain Confusion&#xff0c;DDC&#xff09;算法。项目包括加载CWRU轴承原始信号&#xff0c;信号处理、数据集制作&#xff0c;模型搭建&#xff0c;DDC域混淆算法设计、特征可视化&#xff0c;混淆矩阵等流程来帮助读者学习…

电脑系统找不到mfc100u.dll,无法继续执行代码的多种解决方法

当你试图打开某些应用程序或游戏时&#xff0c;可能会收到“mfc100u.dll文件丢失”的错误消息。这个错误通常会使应用程序或游戏无法正常启动。以下关于mfc100u.dll丢失的解决方法的一些分析。 一.什么是mfc100u.dll文件 mfc100u.dll是Microsoft Visual Studio 2010应用程序使…

flutter之常用数据类型

常用数据类型学习&#xff1a; Numbers&#xff08;数值类型&#xff09; int 例如&#xff1a;1、10、100 整型 int num 1; int num2 10; int num3 100; double 例如&#xff1a;0.1、2.3、10.1 浮点型 double a 0.1; double b 2.3; double c …

c++开关灯

题目描述 现有 &#x1d45b;n 盏灯排成一排&#xff0c;从左到右依次编号为&#xff1a;11&#xff0c;22&#xff0c;……&#xff0c;&#x1d45b;n。然后依次执行 &#x1d45a;m 项操作。 操作分为两种&#xff1a; 指定一个区间 [&#x1d44e;,&#x1d44f;][a,b]&…

Linux常见运维命令

lscpu socket lsblk 硬盘 ip a free -mh 内存 lspci -nn | grep -i nvidia 修改ipmi地址 ipmitool lan print ipmitool -I open lan set 1 ipsrc static 设置本地BMC地址为静态&#xff0c;才能设置IP ipmitool -I open lan set 1 ipaddr 192.168.0.51 设置本地BMC的IP地址 ipm…

QT多个界面

主函数 #include "widget.h" #include "second.h" #include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;Second s;QObject::connect(&w,&Widget::my_signals,&s,&Second::my_slots);w.…

哈希leetcode-1

目录 1前言 2.例题 2.1两数之和 2.2判断是否互为字符重排 2.3存在重复元素1 2.4存在重复元素2 2.5字母异位词分组 1前言 哈希表主要是适合于快速查找某个元素&#xff08;O(1)&#xff09; 当我们要频繁的查找某个元素&#xff0c;第一哈希表O(1)&#xff0c;第二&#xf…