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; 
    }
}
相关推荐
Jason_Honey243 分钟前
【平安Agent算法岗面试-二面】
人工智能·算法·面试
香芋Yu2 小时前
【大模型面试突击】08_推理范式与思维链
面试·职场和发展
小李独爱秋3 小时前
模拟面试:用自己的话解释一下lvs的工作原理
linux·运维·面试·职场和发展·操作系统·lvs
童园管理札记6 小时前
【记录模板】大班科学小游戏观察记录(盐主题:《会变魔术的盐》)
经验分享·深度学习·职场和发展·学习方法·微信公众平台
想用offer打牌7 小时前
一站式了解火焰图的基本使用
后端·面试·架构
SuperEugene8 小时前
错误处理与 try/catch:真实项目里应该捕什么错?
前端·javascript·面试
Jason_Honey29 小时前
【蚂蚁金服Agent算法岗一面】
人工智能·算法·自然语言处理·面试
Wect9 小时前
从输入URL到页面显示的完整技术流程
前端·面试·浏览器
追随者永远是胜利者10 小时前
(LeetCode-Hot100)226. 翻转二叉树
java·算法·leetcode·职场和发展·go
石去皿10 小时前
文本分类常见面试篇:从 fastText 到 TextCNN 的核心考点全解析
面试·分类·数据挖掘