Java | Leetcode Java题解之第433题最小基因变化

embedded/2024/9/24 7:29:48/

题目:

题解

class Solution {public int minMutation(String start, String end, String[] bank) {int m = start.length();int n = bank.length;List<Integer>[] adj = new List[n];for (int i = 0; i < n; i++) {adj[i] = new ArrayList<Integer>();}int endIndex = -1;for (int i = 0; i < n; i++) {if (end.equals(bank[i])) {endIndex = i;}for (int j = i + 1; j < n; j++) {int mutations = 0;for (int k = 0; k < m; k++) {if (bank[i].charAt(k) != bank[j].charAt(k)) {mutations++;}if (mutations > 1) {break;}}if (mutations == 1) {adj[i].add(j);adj[j].add(i);}}}if (endIndex == -1) {return -1;}Queue<Integer> queue = new ArrayDeque<Integer>();boolean[] visited = new boolean[n];int step = 1;for (int i = 0; i < n; i++) {int mutations = 0;for (int k = 0; k < m; k++) {if (start.charAt(k) != bank[i].charAt(k)) {mutations++;}if (mutations > 1) {break;}}if (mutations == 1) {queue.offer(i);visited[i] = true;}}        while (!queue.isEmpty()) {int sz = queue.size();for (int i = 0; i < sz; i++) {int curr = queue.poll();if (curr == endIndex) {return step;}for (int next : adj[curr]) {if (visited[next]) {continue;}visited[next] = true;queue.offer(next);}}step++;}return -1;}
}

http://www.ppmy.cn/embedded/115974.html

相关文章

Flutter鸿蒙化环境配置(windows)

Flutter鸿蒙化环境配置&#xff08;windows&#xff09; 参考资料Window配置Flutter的鸿蒙化环境下载配置环境变量HarmonyOS的环境变量配置配置Flutter的环境变量Flutter doctor -v 检测的问题flutter_flutter仓库地址的警告问题Fliutter doctor –v 报错[!] Android Studio (v…

cccccccccccc

目录 1. ls指令 2. pwd指令 3. cd指令 4. whoami 5. clear指令 6. touch指令 7. mkdir指令(重要) 8. rmdir指令与rm指令(重要) 8.1 rmdir指令 8.2 rm指令 9. man指令(重要) 10. cp指令(重要) 11. mv指令(重要) 12. nano指令 13. cat指令 14. echo指令 重定向 1…

携手阿里云CEN:共创SD-WAN融合广域网

在9月19日举行的阿里云云栖大会上&#xff0c;犀思云作为SD-WAN领域的杰出代表及阿里云的SD-WAN重要合作伙伴&#xff0c;携手阿里云共同推出了创新的企业上云方案——Fusion WAN智连阿里云解决方案。这一创新方案不仅彰显了犀思云在SD-WAN技术领域的深厚积累&#xff0c;更体现…

秒表【JavaScript】

这个代码实现了一个基本的功能性秒表。 实现功能&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-sc…

git学习报告

文章目录 git学习报告如何配置vscode终端安装PowerShell安装 Microsoft.Powershell.Preview使用 git的使用关于团队合作 git指令本地命令&#xff1a;云端指令 git学习报告 如何配置vscode 安装powershell调教window终端&#xff0c;使其像Linux一样&#xff0c;通过Linux命令…

CVE-2024-44902 Thinkphp反序列化漏洞

Thinkphp v6.1.3至v8.0.4版本中存在反序列化漏洞&#xff0c;攻击者可利用此漏洞执行任意代码。 影响版本 v6.1.3 < thinkphp < v8.0.4 环境搭建 环境&#xff1a;php8.0.2thinkphp8.0.4memcached3.2.0 首先搭建 thinkphp 环境&#xff1a;thinkPHP 8.0.4 安装_thin…

新提案:C++将变得内存安全

革命性的提案&#xff1a;C 将添加借用检查、生命周期、mut、sendsync 在遭受内存安全棒的打击两年后&#xff0c;C 社区发布了一项提案&#xff0c;以帮助开发人员编写更不容易受到攻击的代码。 Safe C 扩展提案旨在解决易受攻击的编程语言的致命弱点&#xff0c;即确保代码…

Leetcode面试经典150题-130.被围绕的区域

给你一个 m x n 的矩阵 board &#xff0c;由若干字符 X 和 O 组成&#xff0c;捕获 所有 被围绕的区域&#xff1a; 连接&#xff1a;一个单元格与水平或垂直方向上相邻的单元格连接。区域&#xff1a;连接所有 O 的单元格来形成一个区域。围绕&#xff1a;如果您可以用 X 单…