(LeetCode 每日一题) 909. 蛇梯棋 (广度优先搜索bfs)

article/2025/6/18 21:29:17

题目:909. 蛇梯棋

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
思路:广度优先搜索bfs+队列,时间复杂度0(6*n^2)。
细节看注释

C++版本:

class Solution {
public:int snakesAndLadders(vector<vector<int>>& board) {int n=board.size();// vis[i]:表示i是否遍历过,避免环,重复遍历vector<bool> vis(n*n+1,false);// 队列,记录当前可以到达的位置queue<int> q;//初始化q.push(1);vis[1]=true;//距离,即次数int dis=-1;//不为空,则遍历while(q.size()){dis++;// 遍历当前dis达到的所有位置int cnt=q.size();while(cnt--){int t=q.front();q.pop();// 到达目的地,退出if(t==n*n){return dis;}// 遍历当前位置t,可达的所有位置kfor(int k=t+1;k<=min(t+6,n*n);k++){// 预处理出k在数组中的下标// k-1是为了方便处理,0~n*n-1int x=(k-1)/n,y=(k-1)%n;if(x%2!=0){y=n-1-y;}x=n-1-x;// tg是这一步可达的位置int tg=board[x][y];//小于0,说明不能跳,可达的位置就是k了if(tg<0) tg=k;//没遍历过if(vis[tg]==false){q.push(tg);vis[tg]=true;}}}}// 不存在return -1;}
};

JAVA版本:

class Solution {public int snakesAndLadders(int[][] board) {int n=board.length;boolean[] vis=new boolean[n*n+1];Arrays.fill(vis,false);Queue<Integer> qu=new ArrayDeque<>();qu.add(1);vis[1]=true;int dis=-1;while(!qu.isEmpty()){dis++;int cnt=qu.size();while(cnt!=0){cnt--;int t=qu.poll();if(t==n*n) return dis;for(int k=t+1;k<=Math.min(t+6,n*n);k++){int x=(k-1)/n;int y=(k-1)%n;if(x%2==1){y=n-1-y;}x=n-1-x;int tg=board[x][y];if(tg<0) tg=k;if(!vis[tg]){qu.add(tg);vis[tg]=true;}}}}return -1;}
}

Go版本:

func snakesAndLadders(board [][]int) int {n:=len(board)vis:=make([]bool,n*n+1)q:=[]int{1}vis[1]=truedis:=-1for len(q)>0 {dis++qu:=qq=nilfor _,t:=range qu {if t==n*n {return dis}for k:=t+1;k<=min(t+6,n*n);k++ {x,y:=(k-1)/n,(k-1)%nif x%2==1 {y=n-1-y}x=n-1-xtg:=board[x][y]if tg<0 {tg=k}if vis[tg]==false {vis[tg]=true;q=append(q,tg)}}}}return -1;
}

http://www.hkcw.cn/article/kBNeDVNkZR.shtml

相关文章

医疗多模态共情推理与学习一体化网络构成初探

1 引言:多模态共情推理的概念内涵与技术背景 在当今医疗人工智能领域,多模态共情推理正逐步成为突破临床决策支持系统瓶颈的关键范式。这一技术通过融合认知共情与情感共情的双重机制,模拟人类医生的综合诊断思维过程,实现对患者全方位健康状态的深度理解。医疗环境中的共…

RFID技术深度剖析:从原理、协议到S50卡与FM17550读写

知识点1【RFID的概述】 学习目标是学习对这个卡片的读写 用已有的手册实现对卡片内数据的读写操作 RFID&#xff1a;&#xff08;Radio Frequency Identification&#xff09;无线射频识别 通过无线识别目标&#xff0c;并读写相关数据&#xff0c;而无需接触 位于感知层&…

4-香豆酸:CoA连接酶晶体-文献精读138

Crystal structures of a Populus tomentosa 4-coumarate:CoA ligase shed light on its enzymatic mechanisms 杨树&#xff08;Populus tomentosa&#xff09;4-香豆酸&#xff1a;CoA连接酶的晶体结构揭示了其酶促机制 摘要 4-香豆酸&#xff1a;CoA连接酶&#xff08;4CL…

VTK|实现类似CloundCompare的测量功能

文章目录 CloundCompare在点、线、面三种模式下的显示内容✅ 图1&#xff1a;点模式✅ 图2&#xff1a;线模式✅ 图3&#xff1a;面模式 增加控制菜单栏实现测量功能类如何调用项目git链接 CloundCompare在点、线、面三种模式下的显示内容 点 线 面 三张图展示了 CloudComp…

Android15 userdebug版本不能remount

背景描述&#xff1a; 最近调试Android Vendor Hal的时候发现一个奇怪的现象: android userdebug版本刷到设备中&#xff0c;执行adb root没提示错误&#xff0c;但是没有获取到root权限。 Android设备运行的系统版本有三种情况&#xff1a;user版本、userdebug版本和eng版本…

伊朗外长:将适当回应美方核谈判提案

△伊朗外交部长阿拉格齐(资料图)当地时间5月31日,伊朗外交部长阿拉格齐在社交平台表示,当天阿曼外交大臣巴德尔访问伊朗并向其介绍了美方有关核谈判的提案。阿拉格齐表示,伊朗将根据原则、国家利益和伊朗人民的权利对此作出适当的回应。白宫新闻秘书莱维特当地时间31日表示…

27 C 语言编程核心:main 主函数(基本形式、返回值、参数、命令行传参)、多文件编程实践

1 main 主函数 1.1 主函数的作用 在 C 语言中&#xff0c;main 主函数是程序的入口函数&#xff0c;所有 C 程序必须包含一个名为 main 的函数。程序总是从该函数开始执行&#xff0c;没有它程序就无法启动。 主函数可以调用其他函数。其他函数不能调用主函数。主函数不能调用…

GIS常见数据及主要应用综述:类型解析、应用案例与未来趋势全景解读

&#x1f30f; GIS常见数据及主要应用综述&#xff1a;类型解析、应用案例与未来趋势全景解读 地理信息系统&#xff08;GIS&#xff09;是支撑空间决策、资源管理、城市治理的重要技术体系。本文从常见数据类型入手&#xff0c;结合中国及国际资源&#xff0c;梳理典型GIS应用…

系统性学习C语言-第十二讲-深入理解指针(2)

系统性学习C语言-第十二讲-深入理解指针&#xff08;2&#xff09; 1. const 修饰指针1.1 const 修饰变量1.2 const 修饰指针变量 2. 野指针2.1 野指针成因2.2 如何规避野指针2.2.1 指针初始化2.2.2 小心指针越界2.2.3 指针变量不再使用时&#xff0c;及时置 NULL &…

Linux安装redis

Linux redis路径 https://download.redis.io/releases/解压安装Redis 解压 tar -zvxf redis-6.0.5.tar.gz 由于redis是c语言编写的&#xff0c;所以我们需要先安装gcc&#xff0c;安装的命令如下&#xff1a; yum install gcc-c安装 输入命令&#xff1a; make PREFIX/usr/…

NumPy 数组计算:广播机制

文章目录 NumPy 数组计算&#xff1a;广播机制一、广播机制简介二、广播机制的规则1. 广播机制示例 12. 广播机制示例 23. 广播机制示例 3 三、广播机制实战1. 数组的中心化2. 绘制二维函数 NumPy 数组计算&#xff1a;广播机制 我们在NumPy数组的计算&#xff1a;通用函数中看…

Codesys FOR 循环之轴控

关于多伺服的轴控,不管怎么写都会很复杂,要么编程的时候代码行数多,要么是后期检查时非常麻烦,目前还未找到一个两全其美的方法,今天介绍的是通过FOR循环的轴控,就属于后者,代码行数较少,控制的轴数也没有限制,不需要一个轴一个的复制FB块,但是想在调试的时候实时查看…

欧冠决赛杜埃梅开二度 新星闪耀赛场

北京时间6月1日,本赛季的欧冠决赛中,19岁的杜埃表现出色,梅开二度并送出一次助攻,帮助巴黎圣日耳曼在比赛进行到73分钟时以4-0领先国际米兰。据统计,杜埃成为自1964年国际米兰名宿桑德罗-马佐拉以来,首位在欧冠决赛中完成梅开二度并且送出助攻的球员。本赛季,杜埃代表巴…

使用VSCode在WSL和Docker中开发

通过WSL&#xff0c;开发人员可以安装 Linux 发行版&#xff08;例如 Ubuntu、OpenSUSE、Kali、Debian、Arch Linux 等&#xff09;&#xff0c;并直接在 Windows 上使用 Linux 应用程序、实用程序和 Bash 命令行工具&#xff0c;不用进行任何修改&#xff0c;也无需使用传统虚…

《汇编语言》第12章 内中断——实验12 编写0号中断的处理程序

编写0号中断的处理程序&#xff0c;使得在除法溢出发生时&#xff0c;在屏幕中间显示字符串"divide error&#xff01;"&#xff0c;然后返回到DOS。 要求&#xff1a;仔细跟踪调试&#xff0c;在理解整个过程之前&#xff0c;不要进行后面课程的学习。 ;sy12.asm …

黑马k8s(十八)

一&#xff1a;安全认证 1.安全认证-概述 2.安全认证-认证方式 认证管理 3.安全认证-授权管理 因为没有授予角色deployment的权限&#xff0c;所以不能查看 4.安全认证-准入控制 二&#xff1a;DashBoard 之前在kubernetes中完成的所有操作都是通过命令行工具kubectl完成的…

python:PyMOL 使用教程 及实用示例

安装参阅&#xff1a;开源版PyMol安装保姆级教程 百度网盘下载 提取码&#xff1a;csub 简介: PyMOL是一个Python增强的分子图形工具。它擅长蛋白质、小分子、密度、表面和轨迹的3D可视化。它还包括分子编辑、射线追踪和动画。 PyMol的名字来源于“Py”表示该软件基于Python这…

第十二节:第三部分:集合框架:List系列集合:特点、方法、遍历方式、ArrayList集合的底层原理

List系列集合特点 List集合的特有方法 List集合支持的遍历方式 ArrayList集合的底层原理 ArrayList集合适合的应用场景 代码&#xff1a;List系列集合遍历方式 package com.itheima.day19_Collection_List;import java.util.ArrayList; import java.util.Iterator; import jav…

ZC-OFDM雷达通信一体化减小PAPR——SC-FDMA技术

文章目录 前言一、SC-FDMA 技术1、简介2、原理 二、MATLAB 仿真1、核心代码2、仿真结果 三、资源自取 前言 在 OFDM 雷达通信一体化系统中&#xff0c;信号的传输由多个子载波协同完成&#xff0c;多个载波信号相互叠加形成最终的发射信号。此叠加过程可能导致信号峰值显著高于…

【算法】贪心算法

一、贪心算法基本思想 贪心算法总是作出在当前看来最好的选择。也就是说贪心算法并不从 整体最优考虑&#xff0c;它所作出的选择只是在某种意义上的局部最优选择。 我们希望贪心算法得到的最终结果也是整体最优的。虽然贪心算法不 能对所有问题都得到整体最优解&#xff08;O…