LeetCode 752. 打开转盘锁(图的BFS最短路径)

1. 题目

你有一个带有四个圆形拨轮的转盘锁。每个拨轮都有10个数字: ‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’ 。每个拨轮可以自由旋转:例如把 ‘9’ 变为 ‘0’,‘0’ 变为 ‘9’ 。每次旋转都只能旋转一个拨轮的一位数字。

锁的初始数字为 ‘0000’ ,一个代表四个拨轮的数字的字符串。

列表 deadends 包含了一组死亡数字,一旦拨轮的数字和列表里的任何一个元素相同,这个锁将会被永久锁定,无法再被旋转。

字符串 target 代表可以解锁的数字,你需要给出最小的旋转次数,如果无论如何不能解锁,返回 -1。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/open-the-lock
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. BFS解题

  • 图的广度优先搜索
  • 0000入队,然后他的8种可能的走法若不在死亡数字中就接着入队
  • 记录走过了多少层
class Solution {
public:int openLock(vector<string>& deadends, string target) {unordered_set<string> dead(deadends.begin(), deadends.end());if(dead.find("0000") != dead.end())return -1;unordered_set<string> visited;queue<string> q;string tp, tp_1, tp_2;int step = 0, n, i;vector<int> dir = {1,-1};q.push("0000");visited.insert("0000");while(!q.empty()) {n = q.size();while(n--){tp = q.front();q.pop();if(tp == target)return step;for(i = 0; i < 4; ++i){tp_1 = tp_2 = tp;tp_1[i] = tp_1[i] == '9' ? '0' : tp_1[i]+1;tp_2[i] = tp_2[i] == '0' ? '9' : tp_2[i]-1;if(visited.find(tp_1) == visited.end() && dead.find(tp_1) == dead.end()){visited.insert(tp_1);q.push(tp_1);}if(visited.find(tp_2) == visited.end() && dead.find(tp_2) == dead.end()){visited.insert(tp_2);q.push(tp_2);}}}++step;}return -1;}
};

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/478731.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用TensorFlow训练WDL模型性能问题定位与调优

简介 TensorFlow是Google研发的第二代人工智能学习系统&#xff0c;能够处理多种深度学习算法模型&#xff0c;以功能强大和高可扩展性而著称。TensorFlow完全开源&#xff0c;所以很多公司都在使用&#xff0c;但是美团点评在使用分布式TensorFlow训练WDL模型时&#xff0c;发…

docker镜像打包save,载入load,启动run

docker镜像打包save&#xff0c;载入load&#xff0c;启动run docker打包&#xff0c;针对的是镜像&#xff0c;而不是运行中的容器。 查看当前系统的镜像文件&#xff1a; docker images 首先&#xff0c;将当前运行中的&#xff0c;已经自定义修改之后的容器保存为新的镜像…

会议交流 - CNCC 技术论坛 | NLP中知识和数据怎么选?当然是全都要!——第四届中文信息技术发展战略研讨会...

本文转载自公众号&#xff1a;中国计算机学会 。本论坛将于CNCC2020期间&#xff0c;10月23日下午16:00-18:00&#xff0c;在北京新世纪日航饭店3层南京厅举行。本论坛将邀请多位来自国内著名高校和人工智能企业的知名自然语言处理专家介绍他们在知识图谱、知识获取、预训练模型…

从我开发过的Tensorflow、飞桨、无量框架看深度学习这几年

文 | Peter潘欣知乎和深度学习框架打交道已有多年时间。从Google的TensorFlow, 到百度的PaddlePaddle&#xff0c;再到现在腾讯的无量。很庆幸在AI技术爆发的这些年横跨中美几家公司&#xff0c;站在一个比较好的视角看着世界发生巨大的变化。在这些经历中&#xff0c;视角在不…

探索Glide对Gif图片资源的获取、解析过程

先预祝大家汤圆节快乐&#xff01;很久没写博客了。今天我们来探索一下Glide是如何支持Gif图片加载的。 本篇博客的目的 了解代码分析的基本思路与方法了解Glide是如何对Gif图片进行支持的 探索背景 为什么会有这么一个想法呢&#xff0c;一来一直对Glide是知其名而不知其所…

美团“猜你喜欢”深度学习排序模型实践

引言 推荐作为解决信息过载和挖掘用户潜在需求的技术手段&#xff0c;在美团点评这样业务丰富的生活服务电子商务平台&#xff0c;发挥着重要的作用。在美团App里&#xff0c;首页的“猜你喜欢”、运营区、酒店旅游推荐等重要的业务场景&#xff0c;都是推荐的用武之地。 目前&…

如何关闭docker容器里的进程

如何关闭docker容器里的进程 1、使用docker exec 容器名 ps -ef命令查看进程信息 示例&#xff1a; 创建名为"redis"的容器&#xff0c;并在容器内部和宿主机中查看容器中的进程信息&#xff1a; 2、然后进入该容器中&#xff0c;执行如下命令即可停掉进程&…

论文浅尝 | 一日看尽长安花--NLP可解释研究梳理

本文是对TACL2019《Analysis Methods in Neural Language Processing: A Survey》的翻译和整理。本文转载自知乎&#xff0c;文章链接&#xff1a;https://zhuanlan.zhihu.com/p/265815975导读NLP领域发展迅猛&#xff0c;其模型分析方法也正逐渐火热。为什么要研究NLP的可解释…

简明扼要的反射入门教程

反射 反射作为RTTI语言&#xff08;比如Java&#xff09;的基础之一被很多人所熟知&#xff0c;但是有些同学对反射本身还是懵懵懂懂的&#xff0c;不是很清楚它到底有什么用。今天这节课我们就对反射本身来一个通体的认知。 定义 反射所在的包为&#xff1a;java.lang.refl…

人在斯坦福,刚上CS224n

文 | Jazon大家好&#xff0c;我是Jazon&#xff0c;现在是Stanford计算机硕士项目的一只学生&#xff0c;非常荣幸加入小夕的大家庭&#xff01;请各路大神多多指教呀。2021年1月12日&#xff0c;又一季Stanford CS224n——自然语言处理开课了&#xff0c;我和很多MSCS同学一起…

美团外卖骑手背后的AI技术

背景 随着数字化时代的到来&#xff0c;外卖市场近年来发展非常迅猛。对外卖物流系统而言&#xff0c;配送效率和用户体验至关重要。而实际配送过程是由配送员&#xff08;骑手&#xff09;最终完成的&#xff0c;因此&#xff0c;想要真正提升配送效率&#xff0c;不但要在智能…

软件设计师:下午试题类型以及问题总结+软件设计师考试下午题统计分析(06到2019年)

‘’’ 首次更新下午试题 ‘’’ 下午考试时间为150分钟&#xff08;14:00–16:30&#xff09; 试题一到四为必答题&#xff0c;试题五和六为选答一个&#xff0c;每题15分&#xff0c;总共75分&#xff0c;每题大概3小问 第一题为结构化分析与设计&#xff0c;考查数据流…

LeetCode 494. 目标和(DFS+DP)

文章目录1. 题目2. 解题2.1 递归2.2 DP1. 题目 给定一个非负整数数组&#xff0c;a1, a2, …, an, 和一个目标数&#xff0c;S。现在你有两个符号 和 -。对于数组中的任意一个整数&#xff0c;你都可以从 或 -中选择一个符号添加在前面。 返回可以使最终数组和为目标数 S 的…

使用Kotlin开发Android应用初体验

使用Kotlin开发Android应用初体验 昨晚&#xff0c;最近一届的谷歌IO大会正式将Kotlin确定为了官方开发语言&#xff0c;作为一名Android开发鸟&#xff0c;怎么能不及时尝尝鲜呢? Kotlin的简要介绍 在开发之前&#xff0c;很多同学一定有很多疑问&#xff0c;Kotlin到底有…

论文浅尝 - ICML2020 | 基于子图推理的归纳式关系预测

论文笔记整理&#xff1a;陈名杨&#xff0c;浙江大学在读博士生&#xff0c;主要研究方向为知识图谱表示学习。论文来源&#xff1a;ICML 2020Introduction当前在知识图谱上&#xff08;KnowledgeGraph&#xff0c;KG&#xff09;进行关系预测的很多方法都依靠在对知识图谱中的…

CVPR 二十年,影响力最大的 10 篇论文!

文 | 二玖极市平台此前&#xff0c;极市盘点了图像分割在过去二十年中影响力最大的10篇论文&#xff0c;得到了许多开发者的支持。今天&#xff0c;我们将对计算机视觉领域三大顶会之一CVPR在近二十年来中产生的优秀论文进行一个全面的盘点与总结。CVPR是计算机视觉领域三大顶会…

DataMan-美团旅行数据质量监管平台实践

背景 数据&#xff0c;已经成为互联网企业非常依赖的新型重要资产。数据质量的好坏直接关系到信息的精准度&#xff0c;也影响到企业的生存和竞争力。Michael Hammer&#xff08;《Reengineering the Corporation》一书的作者&#xff09;曾说过&#xff0c;看起来不起眼的数据…

jupyter notebook切换到其他配置好的conda虚拟环境

1 手把手教你如何把jupyter notebook切换到其他配置好的conda虚拟环境 https://blog.csdn.net/weixin_41813895/article/details/84750990 2 Jupyter notebook切换Python环境 https://www.jianshu.com/p/8188c32a3a34

LeetCode 133. 克隆图(图的BFS/DFS)

1. 题目 给定无向连通图中一个节点的引用&#xff0c;返回该图的深拷贝&#xff08;克隆&#xff09;。图中的每个节点都包含它的值 val&#xff08;Int&#xff09; 和其邻居的列表&#xff08;list[Node]&#xff09;。 class Node { public:int val;vector<Node*> n…

七天搞定java接口自动化测试实战,一文搞定...

前言 无论是自动化测试还是自动化部署&#xff0c;撸码肯定少不了&#xff0c;所以下面的基于java语言的接口自动化测试&#xff0c;要想在业务上实现接口自动化&#xff0c;前提是要有一定的java基础。 如果没有java基础&#xff0c;也没关系。这里小编也为大家提供了一套jav…