day72(1.31)——leetcode面试经典150

433. 最小基因变化

433. 最小基因突变

这里我一开始弄错了,我直接一开始就将s标记好,但是我发现这样有的样例是过不了的,因为只有有效突变才能作为标记成已经访问

题目:

题解:

java 复制代码
class Solution {
    public int minMutation(String startGene, String endGene, String[] bank) {
        //先用映射将基因库中的序列赋值,方便寻找
        Map<String, Integer> map = new HashMap<>();
        for(int i=0;i<bank.length;i++) {
            map.put(bank[i], 1);
        } 
        Queue<String> queue = new LinkedList<>();
        queue.offer(startGene);
        int step = 0;
        while(queue.size()>0) {
            int size = queue.size();
            for(int l=0;l<size;l++) {
                String t = queue.poll();
                //判断一下跟最终需要的结果是否一样
                if(t.equals(endGene)) {
                    return step;
                }
                for(int i=0;i<bank.length;i++) {
                    String s = bank[i];
                    if(map.get(s)==0) {
                        continue;
                    }
                    
                    int diff = 0;
                    for(int j=0;j<s.length();j++) {
                        if(s.charAt(j)!=t.charAt(j)) {
                            diff++;
                        }
                    }
                    if(diff==1) {
                        queue.offer(s);
                        //只有有效突变才能将s标记为已访问
                        map.put(s, 0);
                    }
                }
            }
            //进行新增更改次数
            step++;  
        }
        return -1; 
    }
}
相关推荐
虚无的纽扣4 小时前
【力扣刷题】第五天:将 x 减到 0 的最小操作数、最大连续1的个数 III
算法·leetcode·职场和发展
子林super17 小时前
MySQL三大日志(binlog、redo log和undo log)详解
面试
救救孩子把1 天前
AI面试八股文-03_3-RAG 系统面试题
人工智能·redis·面试·agent·rag
我命由我123451 天前
动火作业极简理解
学习·职场和发展·产品运营·求职招聘·职场发展·产品经理·学习方法
十年Java程序媛1 天前
Java 内部类全解|成员 / 静态 / 匿名内部类,理清和 Lambda 的区别
java·spring boot·面试
用户676081149111 天前
个人图书室
面试
柒和远方1 天前
企业级多模态知识库:从文件入库、跨模态检索到可追溯回答
面试
健康活着就好1 天前
# 手写Promise.all和Promise.race,面试再也不怕了
面试·json
八月的雨季 最後的冰吻1 天前
C++ 面试要点笔记(续)
c++·笔记·面试