BFS
文章平均质量分 61
我很忙2010
咩
展开
-
leetcode 1765. 地图中的最高点
给你一个大小为m x n的整数矩阵isWater,它代表了一个由陆地和水域单元格组成的地图。如果isWater[i][j] == 0,格子(i, j)是一个陆地格子。 如果isWater[i][j] == 1,格子(i, j)是一个水域格子。你需要按照如下规则给每个单元格安排高度:每个格子的高度都必须是非负的。 如果一个格子是是水域,那么它的高度必须为0。 任意相邻的格子高度差至多为1。当两个格子在正东、南、西、北方向上相互紧挨着,就称...原创 2022-01-29 23:33:33 · 156 阅读 · 0 评论 -
leetcode 价格范围内最高排名的 K 样物品
给你一个下标从0开始的二维整数数组grid,它的大小为m x n,表示一个商店中物品的分布图。数组中的整数含义为:0表示无法穿越的一堵墙。 1表示可以自由通过的一个空格子。 所有其他正整数表示该格子内的一样物品的价格。你可以自由经过这些格子。从一个格子走到上下左右相邻格子花费1步。同时给你一个整数数组pricing和start,其中pricing = [low, high]且start = [row, col],表示你开始位置为(row, col),同时...原创 2022-01-23 17:25:03 · 376 阅读 · 0 评论 -
leetcode 2101. 引爆最多的炸弹
给你一个炸弹列表。一个炸弹的爆炸范围定义为以炸弹为圆心的一个圆。炸弹用一个下标从0开始的二维整数数组bombs表示,其中bombs[i] = [xi, yi, ri]。xi和yi表示第i个炸弹的 X 和 Y 坐标,ri表示爆炸范围的半径。你需要选择引爆一个炸弹。当这个炸弹被引爆时,所有在它爆炸范围内的炸弹都会被引爆,这些炸弹会进一步将它们爆炸范围内的其他炸弹引爆。给你数组bombs,请你返回在引爆一个炸弹的前提下,最多能引爆的炸弹数目。示例...原创 2021-12-19 00:43:06 · 679 阅读 · 0 评论 -
leetcode 1034. 边界着色
给你一个大小为m x n的整数矩阵grid,表示一个网格。另给你三个整数row、col和color。网格中的每个值表示该位置处的网格块的颜色。两个网格块属于同一连通分量需满足下述全部条件:两个网格块颜色相同 在上、下、左、右任意一个方向上相邻连通分量的边界是指连通分量中满足下述条件之一的所有网格块:在上、下、左、右任意一个方向上与不属于同一连通分量的网格块相邻 在网格的边界上(第一行/列或最后一行/列)请你使用指定颜色color为所有包含网格块grid[row...原创 2021-12-11 17:27:26 · 106 阅读 · 0 评论 -
leetcode 5793. 迷宫中离入口最近的出口(C++、java、python)
给你一个m x n的迷宫矩阵maze(下标从 0 开始),矩阵中有空格子(用'.'表示)和墙(用'+'表示)。同时给你迷宫的入口entrance,用entrance = [entrancerow, entrancecol]表示你一开始所在格子的行和列。每一步操作,你可以往上,下,左或者右移动一个格子。你不能进入墙所在的格子,你也不能离开迷宫。你的目标是找到离entrance最近的出口。出口的含义是maze边界上的空格子。entrance格子不算出口。...原创 2021-07-11 01:04:10 · 441 阅读 · 2 评论 -
leetcode 5210. 球会落何处(C++、Java)
用一个大小为m x n的二维网格grid表示一个箱子。你有n颗球。箱子的顶部和底部都是开着的。箱子中的每个单元格都有一个对角线挡板,跨过单元格的两个角,可以将球导向左侧或者右侧。将球导向右侧的挡板跨过左上角和右下角,在网格中用1表示。 将球导向左侧的挡板跨过右上角和左下角,在网格中用-1表示。在箱子每一列的顶端各放一颗球。每颗球都可能卡在箱子里或从底部掉出来。如果球恰好卡在两块挡板之间的 "V" 形图案,或者被一块挡导向到箱子的任意一侧边上,就会卡住。返回一个大小为n...原创 2020-12-27 22:22:14 · 189 阅读 · 2 评论 -
leetcode 1654. 到家的最少跳跃次数(C++)
有一只跳蚤的家在数轴上的位置x处。请你帮助它从位置0出发,到达它的家。跳蚤跳跃的规则如下:它可以往前跳恰好a个位置(即往右跳)。 它可以往后跳恰好b个位置(即往左跳)。 它不能连续往后跳2次。 它不能跳到任何forbidden数组中的位置。跳蚤可以往前跳超过它的家的位置,但是它不能跳到负整数的位置。给你一个整数数组forbidden,其中forbidden[i]是跳蚤不能跳到的位置,同时给你整数a,b和x,请你返回跳蚤到家的最...原创 2020-11-21 20:30:46 · 439 阅读 · 0 评论 -
leetcode 1162. 地图分析(C++)
你现在手里有一份大小为N x N 的『地图』(网格)grid,上面的每个『区域』(单元格)都用0和1标记好了。其中0代表海洋,1代表陆地,你知道距离陆地区域最远的海洋区域是是哪一个吗?请返回该海洋区域到离它最近的陆地区域的距离。我们这里说的距离是『曼哈顿距离』(Manhattan Distance):(x0, y0)和(x1, y1)这两个区域之间的距离是|x0 -...原创 2019-08-19 13:09:42 · 713 阅读 · 0 评论 -
leetcode 1091. 二进制矩阵中的最短路径(C++)
在一个N ×N 的方形网格中,每个单元格有两种状态:空(0)或者阻塞(1)。一条从左上角到右下角、长度为k的畅通路径,由满足下述条件的单元格C_1, C_2, ..., C_k组成:相邻单元格C_i和C_{i+1}在八个方向之一上连通(此时,C_i和C_{i+1}不同且共享边或角) C_1位于(0, 0)(即,值为grid[0][0]) C_k位于(N-1, N-1)(即,值为grid[N-1][N-1]) 如果C_i位于(r, c),则grid[...原创 2020-10-28 00:13:53 · 538 阅读 · 2 评论 -
leetcode 5548. 最小体力消耗路径(C++)
你准备参加一场远足活动。给你一个二维rows x columns的地图heights,其中heights[row][col]表示格子(row, col)的高度。一开始你在最左上角的格子(0, 0),且你希望去最右下角的格子(rows-1, columns-1)(注意下标从0开始编号)。你每次可以往上,下,左,右四个方向之一移动,你想要找到耗费体力最小的一条路径。一条路径耗费的体力值是路径上相邻格子之间高度差绝对值的最大值决定的。请你返回从左上角走到右下...原创 2020-10-25 22:26:00 · 713 阅读 · 0 评论 -
leetcode 单词转换(C++)
给定字典中的两个词,长度相等。写一个方法,把一个词转换成另一个词, 但是一次只能改变一个字符。每一步得到的新词都必须能在字典中找到。编写一个程序,返回一个可能的转换序列。如有多个可能的转换序列,你可以返回任何一个。示例 1:输入:beginWord = "hit",endWord = "cog",wordList = ["hot","dot","dog","lot","log","cog"]输出:["hit","hot","dot","lot","log","cog"]示例原创 2020-10-25 00:37:08 · 561 阅读 · 0 评论 -
leetcode 1311. 获取你好友已观看的视频(C++)
有n个人,每个人都有一个0到n-1的唯一id。给你数组watchedVideos 和friends,其中watchedVideos[i] 和friends[i]分别表示id = i的人观看过的视频列表和他的好友列表。Level1的视频包含所有你好友观看过的视频,level2的视频包含所有你好友的好友观看过的视频,以此类推。一般的,Level 为k的视频包含所有从你出发,最短距离为k的好友观看过的视频。给定你的id 和一个level值,...原创 2020-10-24 00:41:06 · 186 阅读 · 0 评论 -
leetcode 127. 单词接龙(C++)
给定两个单词(beginWord和endWord)和一个字典,找到从beginWord到endWord的最短转换序列的长度。转换需遵循如下规则:每次转换只能改变一个字母。 转换过程中的中间单词必须是字典中的单词。说明:如果不存在这样的转换序列,返回 0。 所有单词具有相同的长度。 所有单词只由小写字母组成。 字典中不存在重复的单词。 你可以假设beginWord和endWord是非空的,且二者不相同。示例1:输入:beginWord = "hit",en...原创 2020-10-23 23:55:00 · 450 阅读 · 0 评论 -
leetcode 690. 员工的重要性(C++)
给定一个保存员工信息的数据结构,它包含了员工唯一的id,重要度和直系下属的id。比如,员工1是员工2的领导,员工2是员工3的领导。他们相应的重要度为15, 10, 5。那么员工1的数据结构是[1, 15, [2]],员工2的数据结构是[2, 10, [3]],员工3的数据结构是[3, 5, []]。注意虽然员工3也是员工1的一个下属,但是由于并不是直系下属,因此没有体现在员工1的数据结构中。现在输入一个公司的所有员工信息,以及单个员工id,返回这个员工和他所有下属的重要度之和。示例 1:..原创 2020-10-07 13:38:21 · 190 阅读 · 0 评论 -
leetcode 417. 太平洋大西洋水流问题(C++)
给定一个m x n的非负整数矩阵来表示一片大陆上各个单元格的高度。“太平洋”处于大陆的左边界和上边界,而“大西洋”处于大陆的右边界和下边界。规定水流只能按照上、下、左、右四个方向流动,且只能从高到低或者在同等高度上流动。请找出那些水流既可以流动到“太平洋”,又能流动到“大西洋”的陆地单元的坐标。提示:输出坐标的顺序不重要 m和n都小于150示例:给定下面的 5x5 矩阵: 太平洋 ~ ~ ~ ~ ~ ~ 1 2...原创 2020-10-07 00:54:10 · 317 阅读 · 0 评论 -
leetcode 542. 01 矩阵(C++)
给定一个由 0 和 1 组成的矩阵,找出每个元素到最近的 0 的距离。两个相邻元素间的距离为 1 。示例 1:输入:0 0 00 1 00 0 0输出:0 0 00 1 00 0 0示例 2:输入:0 0 00 1 01 1 1输出:0 0 00 1 01 2 1注意:给定矩阵的元素个数不超过 10000。 给定...原创 2020-04-15 22:30:04 · 494 阅读 · 0 评论 -
leetcode 5354. 通知所有员工所需的时间(C++)
公司里有n名员工,每个员工的 ID 都是独一无二的,编号从0到n - 1。公司的总负责人通过headID进行标识。在manager数组中,每个员工都有一个直属负责人,其中manager[i]是第i名员工的直属负责人。对于总负责人,manager[headID] = -1。题目保证从属关系可以用树结构显示。公司总负责人想要向公司所有员工通告一条紧急消息。他将会首先通...原创 2020-03-08 21:57:26 · 302 阅读 · 0 评论 -
leetcode 1306. 跳跃游戏 III(C++)
这里有一个非负整数数组arr,你最开始位于该数组的起始下标start处。当你位于下标i处时,你可以跳到i + arr[i]或者i - arr[i]。请你判断自己是否能够跳到对应元素值为 0 的任意下标处。注意,不管是什么情况下,你都无法跳到数组之外。示例 1:输入:arr = [4,2,3,0,3,1,2], start = 5输出:true解释:...原创 2019-12-29 11:01:54 · 425 阅读 · 0 评论 -
leetcode 1345. 跳跃游戏 IV(C++)
给你一个整数数组arr,你一开始在数组的第一个元素处(下标为 0)。每一步,你可以从下标i跳到下标:i + 1满足:i + 1 < arr.length i - 1满足:i - 1 >= 0 j满足:arr[i] == arr[j]且i != j请你返回到达数组最后一个元素的下标处所需的最少操作次数。注意:任何时候你都不能跳到数组外面。...原创 2020-02-09 00:58:36 · 627 阅读 · 0 评论