当前位置: 首页 > news >正文

433. 最小基因变化

https://leetcode.cn/problems/minimum-genetic-mutation/description/?envType=study-plan-v2&envId=top-interview-150

思路:
根据题目的要求,每次对start改变后得到的字符串都应该在bank中,所以如果存在一条有效变化路径,bank中肯定存在一个状态与end只差一步(start也在bank中),同理我们这样推下去如果存在一个状态等于start就代表存在结果。

class Solution {public int minMutation(String startGene, String endGene, String[] bank) {// 判断endGene是否在bank中boolean exist = false;for (String s : bank) {if(s.equals(endGene)) exist = true;}if(!exist) return -1;// 存储所有状态和距离end的步数HashMap<String, Integer> map = new HashMap<>();map.put(endGene, 0);map.put(startGene, -1);for (String s : bank) {map.put(s, -1); // -1表示未访问过}int cnt = 0;// 存储与end差cnt步变化的状态Queue<String> queue = new LinkedList<>();queue.offer(endGene);Queue<String> temp = new LinkedList<>();while (!queue.isEmpty()) {cnt++;while (!queue.isEmpty()) {String s = queue.poll();for (String str : bank) {// 如果str与s只差一个字符,并且这个状态未被访问过if (map.get(str) == -1 && differ(str, s) == 1) {if (str.equals(startGene)) {return cnt;}map.put(str, cnt);temp.offer(str);}}// 不要忘记start状态if (map.get(startGene) == -1 && differ(startGene, s) == 1) {return cnt;}}queue = temp;temp = new LinkedList<>();}return -1;}/*** 计算两个字符串之间的差异* @param s 被计算串* @param target 目标串* @return 差异的字符数*/public int differ(String s, String target) {int cnt = 0;for (int i = 0; i < s.length(); i++) {if (s.charAt(i) != target.charAt(i)) {cnt++;}}return cnt;}public static void main(String[] args) {System.out.println(new Solution().minMutation("AACCGGTT", "AACCGGTA", new String[]{}));}
}

 

相关文章:

  • PostGIS实现栅格数据导出图片标准格式【ST_AsGDALRaster】
  • JVM核心配置参数详解与调优指南
  • 《Head First 设计模式》第二章 - 笔记
  • go 与面向对象编程(OOP)
  • DTAS 3D多约束装配助力悬架公差分析尺寸链计算:麦弗逊/双叉臂/多连杆/H臂一网打尽
  • 机器学习第十七讲:PCA → 把100维数据压缩成3D视图仍保持主要特征
  • Ubuntu 20.04之Docker安装ES7.17.14和Kibana7.17.14
  • HarmonyOS Navigation组件深度解析与应用实践
  • 【强化学习】#6 n步自举法
  • 用户账号及权限管理:企业安全的基石与艺术
  • 工业自动化实践:机器人上料系统如何优化生产流程?
  • 对于程序员的个人理解
  • 软考教材重点内容 信息安全工程师 25章 移动安全 26章 大数据安全
  • C#学习9——接口、抽象类
  • 黄仁勋Computex演讲:将于三季度推出下一代GB300系统,个人AI计算机DGX Spark已全面投产
  • 【python】pyenv安装
  • HGDB中如何为表增加自增主键
  • InternLM 论文分类微调实践(XTuner 版)
  • docker安装Prometheus+Grafana
  • TeaType 奶茶性格占卜机开发记录:一场俏皮的 UniApp 单页奇遇
  • 完善劳动关系协商协调机制,《共同保障劳动者合法权益工作指引》发布
  • 西藏普兰县公安局网安大队向自媒体人宣传网络安全知识
  • 山东发布高温橙警:预计19日至21日局地可达40℃
  • 国家防汛抗旱总指挥部对15个重点省份开展汛前实地督导检查
  • 选址江南制造总局旧址,上海工业博物馆建设有新进展
  • 融创中国:境外债务重组计划聆讯定于9月15日召开