文章目录

    • 题目链接:
    • 题目描述:
    • 解法
    • C++ 算法代码:


题目链接:

433. 最小基因变化


题目描述:

3747d255974002d4d0636187de81c82a


解法

先看懂题目

db37338fbc13d126d70655f4a8566929

先把这个问题转化:图论问题

边权为1的最短路问题。

为什么可以这么想?!

因为每次一步,最终目标也有。

6b5d5e068595e00207431c52fcad0b54


C++ 算法代码:

class Solution {
public:int minMutation(string startGene, string endGene, vector<string>& bank) {// 使用哈希集合存储已访问的基因序列unordered_set<string> vis; // 将基因库转换为哈希集合,方便快速查找unordered_set<string> hash(bank.begin(), bank.end()); // 可能的基因变化字符string change = "ACGT"; // 如果起始基因和目标基因相同,直接返回0if (startGene == endGene)return 0;// 如果目标基因不在基因库中,直接返回-1if (!hash.count(endGene))return -1;// 使用BFS队列queue<string> q;q.push(startGene);vis.insert(startGene);int ret = 0;  // 记录突变次数while (q.size()) {ret++;  // 每处理完一层,突变次数加1int sz = q.size();  // 当前层的节点数// 处理当前层的所有节点while (sz--) {string t = q.front();q.pop();// 尝试改变每个位置的字符for (int i = 0; i < 8; i++) {string tmp = t;  // 创建临时副本,避免修改原字符串// 尝试将当前位置的字符变为A/C/G/Tfor (int j = 0; j < 4; j++) {tmp[i] = change[j];// 如果变化后的序列在基因库中且未被访问过if (hash.count(tmp) && !vis.count(tmp)) {// 找到目标基因,返回当前突变次数if (tmp == endGene)return ret;// 将新序列加入队列,并标记为已访问q.push(tmp);vis.insert(tmp);}}}}}// 如果队列为空仍未找到目标基因,返回-1return -1;}
};

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

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

相关文章

基于单片机汽车少儿安全预警系统

文章目录一、前言1.1 项目介绍【1】项目开发背景【2】设计实现的功能【3】项目硬件模块组成【4】设计意义【5】市面上同类产品研究现状【6】摘要1.2 设计思路1.3 系统功能总结1.4 开发工具的选择【1】设备端开发【2】上位机开发1.5 模块的技术详情介绍1.6 框架图框架图说明&…

Mac 上配置jdk 环境变量

核心步骤是设置 JAVA_HOME 变量&#xff0c;并将其 bin 目录添加到系统的 PATH 变量中。 macOS 从 Catalina (10.15) 版本开始&#xff0c;默认的终端 Shell 从 bash 切换到了 zsh。因此&#xff0c;你需要先确定你正在使用的 Shell&#xff0c;然后编辑对应的配置文件。步骤一…

硬件-音频学习DAY1——音箱材料选择:密度板为何完胜实木

每日更新教程&#xff0c;评论区答疑解惑&#xff0c;小白也能变大神&#xff01;" 目录 一.音箱材料选择的关键因素 二.密度板的声学优势 三.材料稳定性的对比 四.生产工艺的适应性 五.成本与环保的平衡 六.特殊场景的例外情况 七.消费者选购指南 八.行业发展趋势…

微波(Microwave)与毫米波(Millimeter wave)简介

一、电磁波频段划分&#xff0c;微波与毫米波所属 二、微波 可以看出UHF及以上的频段都可以统称为微波。记得之前上微波技术实验课的时候会接触比巴掌还大的金属波导&#xff0c;后来每次看到微波技术的时候都还是感到陌生。今天突然想到&#xff0c;不像在手机里就能完成的5G频…

ObjectMapper教程

ObjectMapper 简介ObjectMapper 是 Jackson 库的核心类&#xff0c;用于 Java 对象与 JSON 数据之间的相互转换。它支持序列化&#xff08;对象转 JSON&#xff09;和反序列化&#xff08;JSON 转对象&#xff09;&#xff0c;广泛应用于 REST API、数据存储和配置处理等场景。…

【Node.js安装注意事项】-安装路径不能有空格

问题描述&#xff1a;在项目中使用 nodemon时&#xff0c;出现了nodemon 启动问题&#xff1a;nodemon : 无法将“nodemon”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。解决办法&#xff1a;在网上找了很多教程&#xff0c;试了很多办法&#xff0c;什么重新配置环境…

Shader开发(六)什么是着色器

在前面的章节中&#xff0c;我们简要提到了着色器的概念&#xff0c;现在有了渲染管线的基础知识&#xff0c;我们可以更深入地理解着色器的真正含义。着色器&#xff08;Shader&#xff09;是运行在图形处理单元&#xff08;GPU&#xff09;上的专用程序&#xff0c;这与我们日…

操作系统-lecture4(进程的调度)

进程的切换 接下来需要了解两个问题 谁触发了进程切换进程切换的动作 中断技术 中断源 中断处理过程&#xff08;陷阱机制&#xff09; 特权指令和非特权指令 Privileged Instructions&#xff1a;特权指令 •The Instructions that can run only in Kernel Mode are called…

机器人程序优化

机器人程序优化核心摘要 本视频详细讲解了机器人程序优化的方法与实践&#xff0c;旨在提高程序的可读性和复用性。通过学习文件夹、子程序调用以及路点优化等核心概念&#xff0c;观众将掌握如何将复杂的机器人搬运程序进行结构化整理&#xff0c;使其更易于理解、调试和在不…

一套视频快速入门并精通PostgreSQL

PostgreSQL从入门到精通系列PostgreSQL数据库是一个对理论知识与操作能力并重的技术&#xff0c;想要快速入门PostgreSQL数据库&#xff0c;这两个方面都要重视。这里的PostgreSQL从入门到精通&#xff0c;是专门针对刚入门的新手小白而录制的一套&#xff0c;有理论讲解也有动…

供应商管理系统有哪些功能?

在企业供应链数字化体系中&#xff0c;供应商管理系统是连接企业与外部合作伙伴的核心枢纽。以鲸采云采购管理系统的供应商模块为例&#xff0c;其功能设计围绕 “全生命周期管理 风险防控 协同效率” 三大核心&#xff0c;通过技术手段解决传统供应商管理中的信息碎片化、流…

新手向:国内外大模型体验与评测

国内外大模型体验与评测技术详解 近年来,人工智能领域的大模型技术取得了突破性进展,以GPT-4、Claude、文心一言等为代表的大语言模型(LLM)已经成为行业热点。国内外科技巨头纷纷布局这一赛道:国外有OpenAI的GPT系列、Anthropic的Claude、Google的PaLM,国内则有百度的文…

深度解读 CSGHub:开源协议、核心功能与产品定位

在大模型时代&#xff0c;“可用”不再足够&#xff0c;企业更需要“可管”、“可控”、“可演进”的一体化解决方案。作为国产开源阵营的中坚力量&#xff0c;CSGHub 如何从“开源与协议”到“功能定位”层层打磨&#xff0c;满足不同行业对合规、安全和灵活部署的诉求&#x…

本土化DevOps实践新篇章:Gitee引领企业高效协作新时代

本土化DevOps实践新篇章&#xff1a;Gitee引领企业高效协作新时代 在数字化转型的浪潮席卷全球的当下&#xff0c;软件开发与运维的协同效率已经成为决定企业竞争力的关键因素。随着国内企业对于数据安全和合规性的要求日益严格&#xff0c;寻找一套既符合本土监管要求又能提升…

B树、B+树、红黑树区别

一、核心概念与性质对比1. B树&#xff08;Balanced Tree&#xff09;定位&#xff1a;多路平衡搜索树&#xff0c;专为磁盘存储优化核心性质&#xff1a;每个节点存储 k-1个键值和k个子节点指针&#xff08;m/2 ≤ k ≤ m&#xff0c;m为阶数&#xff09;所有叶子节点位于同一…

Spring AI 使用阿里百炼平台实现流式对话:基于 SSE 的实践

Spring AI阿里百炼平台实现流式对话&#xff1a;基于 SSE 的实践指南 在大模型应用开发中&#xff0c;流式对话是提升用户体验的关键特性。本文将详细介绍如何利用 Spring AI 结合 Spring Boot&#xff0c;基于 SSE&#xff08;Server-Sent Events&#xff09;协议实现高效的流…

Ubuntu lamp

Ubuntu lamp 前言 在Ubuntu安装lamp架构 我们了解到 lamp是完整的架构 我们前面了解到了 集合了Linux系统 apache MySQL 和PHP语言的完整架构 我们前面说了Centos7中编译安装 lamp 那么 我们去说一下在Ubuntu中安装 ‍ ‍ 安装apache2 ‍ apt直接安装apache2 apt -y install a…

开源向量LLM - Qwen3-Embedding

1 Qwen3-Embedding介绍 Qwen3-Embedding遵循 Apache 2.0 许可证&#xff0c;模型大小从0.6B到8B&#xff0c;支持32k长文本编码。 Model TypeModelsSizeLayersSequence LengthEmbedding DimensionMRL SupportInstruction AwareText EmbeddingQwen3-Embedding-0.6B0.6B2832K10…

云计算服务模式全解析:IaaS、PaaS、SaaS与DaaS的区别与应用

一、云计算概述 云计算是一种通过互联网提供计算服务的模式&#xff0c;其核心特点是输入/输出与计算不在同一主机上。一个完整的云计算环境由云端&#xff08;计算设备&#xff09;、计算机网络和终端&#xff08;输入/输出设备&#xff09;三部分组成&#xff0c;即"云…

qwen 多模态 预训练流程步骤详细介绍

Qwen&#xff08;通义千问&#xff09;是阿里云推出的大语言模型&#xff0c;其多模态预训练是一个复杂且专业的过程&#xff0c;虽然官方没有完全公开全部细节&#xff0c; 但从多模态大模型通用的预训练逻辑上&#xff0c;一般包含以下主要步骤&#xff1a; 数据准备 多模态数…