首页 > 其他分享 >LeetCode -- 127. 单词接龙

LeetCode -- 127. 单词接龙

时间:2023-08-09 09:24:30浏览次数:34  
标签:q1 sub -- cur int 接龙 endWord LeetCode size

 

方法一:双向广搜

class Solution {
public:
    int ladderLength(string beginWord, string endWord, vector<string>& wordList) {
        set<string> se;
        for(auto it : wordList) {
            se.insert(it);
        }

        if(!se.count(endWord)) return 0;

        auto update = [&](queue<string> &q, unordered_map<string, int> &cur, unordered_map<string, int> &other) -> int {
            int m = q.size();
            while(m -- ) {
                string t = q.front();
                q.pop();
                int n = t.size();
                for(int i = 0; i < n; i ++ ) {
                    for(int j = 0; j < 26; j ++ ) {
                        string sub = t;
                        sub[i] = 'a' + j;
                        if(se.count(sub)) {
                            if(cur.count(sub)) continue;
                            if(other.count(sub)) {
                                return cur[t] + other[sub] + 1;
                            } else {
                                q.push(sub);
                                cur[sub] = cur[t] + 1;
                            }
                        }
                    }
                }
            }
            return -1;
        };

        auto bfs = [&]() -> int {
            queue<string> q1, q2;
            unordered_map<string, int> m1, m2;
            q1.push(beginWord);
            m1[beginWord] = 0;
            q2.push(endWord);
            m2[endWord] = 0;

            while(q1.size() && q2.size()) {
                int t = -1;
                if(q1.size() <= q2.size()) {  //注意这里等于号不能少,确保第一次若两个相等从起点开始搜索
                    t = update(q1, m1, m2);
                } else {
                    t = update(q2, m2, m1);
                }
                if(t != -1) return t;
            }
            return -1;
        };

        int res = bfs();
        return res == -1 ? 0: res + 1;
    }
};

 

标签:q1,sub,--,cur,int,接龙,endWord,LeetCode,size
From: https://www.cnblogs.com/zk6696/p/17615964.html

相关文章

  • setJmenubar与直接添加Jmenubar有什么区别
    在JavaSwing中,setJMenuBar()方法和直接添加JMenuBar有以下区别:setJMenuBar()方法:setJMenuBar()是JFrame类的方法,用于将JMenuBar组件设置为JFrame的菜单栏。通过调用setJMenuBar()方法,可以将一个已创建的JMenuBar组件关联到JFrame,使其成为窗口的菜单栏。使用这种方式,可以在......
  • JavaSE--控制语句
    一、控制语句1、控制语句分类顺序结构  按照顺序来执行程序分支结构/选择语句  单分支if、多分支switch循环结构  for、while、dowhile2、分支结构单分支if语法格式:第一种写法:if(布尔表达式){java语句;}......
  • Part1--软件规范总纲
    开发人员规范软件代码编写规范套话目的:统一公司编码风格;提高代码易读性、可靠性和稳定性;减少软件维护成本提高生产力基本原则:维持代码易读、可维护;保持代码清晰;尽可能复用代码实用规则缩进新增文件缩进4空格;平台文件中新增函数、结构体、枚举类型4空格缩进;已经有的......
  • Codeforces Round 891 (Div. 3) 题解
    A.ArrayColoring因为:偶数+偶数=偶数奇数+奇数=偶数奇数+偶数=奇数所以设\(s1\)为奇数之和,\(s2\)为偶数之和\(s2\)必定是偶数如果奇数的个数为偶数,则\(s1\)为偶数;否则是奇数而在\(s1\)为奇数时,即使拿一个奇数加到\(s2\)里,那么也是不合法的所以直接判断奇数的......
  • uniapp中微信小程序取微信头像并上传到.net core后端
    uniapp中微信小程序取微信头像并上传到.netcore后端2023年08月09日后端net7测试成功,先记下来,以后要用的时候直接来这复制粘贴前端uniapp里的vue代码: <template><view><buttonclass="avatar-wrapper"open-type="chooseAvatar"@chooseavatar="o......
  • Vue3+ElementPlus,Cannot read properties of null (reading 'isCE')
    一、环境vue3,ElementPlus,@vue/cli5.0.8,npm9.6.7。二、报错内容在vue3框架,views文件夹下的AboutView.vue文件里,执行<el-button>Default</el-button>语句就会报错如下:Uncaughtruntimeerrors:×ERRORCannotreadpropertiesofnull(reading'isCE')TypeError:Cannotread......
  • Ajax传参,data与dataType
     在使用Ajax向后端传递数据时,你可以使用多种数据类型。在Ajax的dataType参数中,你可以指定以下几种常用的数据类型:"text":这是默认值,表示返回的数据将被视为纯文本字符串。"json":表示返回的数据将被视为JSON格式的数据。在前端代码中,你可以使用JSON.parse()将返回的数据转......
  • JavaSE--方法
    一、方法1、方法的定义/*[修饰符列表]返回值类型方法名(形式参数列表){方法体;//return;终止当前方法}方法写完之后需要调用去使用,不调用没法用1、修饰符列表:不是必选的2、返回值类型:可以是任何数据类型(基本数据类型和引用数据类......
  • 【Hystrix技术指南】(5)Command创建和执行实现
    推荐超值课程:点击获取创建流程构建HystrixCommand或者HystrixObservableCommand对象*使用Hystrix的第一步是创建一个HystrixCommand或者HystrixObservableCommand对象来表示你需要发给依赖服务的请求。若只期望依赖服务每次返回单一的回应,按如下方式构造一个HystrixCommand......
  • 【Hystrix技术指南】(6)请求合并机制原理分析
    推荐超值课程:点击获取[每日一句]也许你度过了很糟糕的一天,但这并不代表你会因此度过糟糕的一生。[背景介绍]分布式系统的规模和复杂度不断增加,随着而来的是对分布式系统可用性的要求越来越高。在各种高可用设计模式中,【熔断、隔离、降级、限流】是经常被使用的。而相关的技......