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; 
    }
}
相关推荐
cyforkk4 小时前
10、Java 基础硬核复习:多线程(并发核心)的核心逻辑与面试考点
java·开发语言·面试
鱼跃鹰飞4 小时前
Leetcode会员尊享面试100题:333.最大二叉搜索子树
数据结构·算法·leetcode·面试
鱼跃鹰飞4 小时前
Leetcode会员尊享面试100题:255.验证二叉搜索树的前序遍历序列
算法·leetcode·面试
YuTaoShao5 小时前
【LeetCode 每日一题】744. 寻找比目标字母大的最小字母——(解法一)遍历
算法·leetcode·职场和发展
码农水水5 小时前
从 OpenFeign 到 RestClient:Spring Cloud 新时代的轻量化 HTTP 调用方案
java·运维·后端·spring·http·spring cloud·面试
xiaoxue..17 小时前
React 手写实现的 KeepAlive 组件
前端·javascript·react.js·面试
快乐非自愿18 小时前
【面试题】MySQL 的索引类型有哪些?
数据库·mysql·面试
南风知我意95718 小时前
【前端面试2】基础面试(杂项)
前端·面试·职场和发展
cyforkk1 天前
11、Java 基础硬核复习:常用类和基础API的核心逻辑与面试考点
java·python·面试