☰
6. 图-lc-python
2026/11/2 6:31:28 网站建设 项目流程

200. 岛屿数量 - 力扣(LeetCode)

给你一个由'1'(陆地)和'0'(水)组成的的二维网格,请你计算网格中岛屿的数量。

岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。

此外,你可以假设该网格的四条边均被水包围。

示例 1:

输入:grid = [ ['1','1','1','1','0'], ['1','1','0','1','0'], ['1','1','0','0','0'], ['0','0','0','0','0'] ]输出:1

示例 2:

输入:grid = [ ['1','1','0','0','0'], ['1','1','0','0','0'], ['0','0','1','0','0'], ['0','0','0','1','1'] ]输出:3

提示:

  • m == grid.length
  • n == grid[i].length
  • 1 <= m, n <= 300
  • grid[i][j]的值为'0'或'1'

130. 被围绕的区域 - 力扣(LeetCode)

给你一个m x n的矩阵board,由若干字符'X'和'O'组成,捕获所有被围绕的区域:

  • 连接:一个单元格与水平或垂直方向上相邻的单元格连接。
  • 区域:连接所有'O'的单元格来形成一个区域。
  • 围绕:如果一个区域中的所有'O'单元格都不在棋盘的边缘,则该区域被包围。这样的区域完全被'X'单元格包围。

通过原地将输入矩阵中的所有'O'替换为'X'来捕获被围绕的区域。你不需要返回任何值。

示例 1:

输入:board = [['X','X','X','X'],['X','O','O','X'],['X','X','O','X'],['X','O','X','X']]

输出:[['X','X','X','X'],['X','X','X','X'],['X','X','X','X'],['X','O','X','X']]

解释:

在上图中,底部的区域没有被捕获,因为它在 board 的边缘并且不能被围绕。

示例 2:

输入:board = [['X']]

输出:[['X']]

提示:

  • m == board.length
  • n == board[i].length
  • 1 <= m, n <= 200
  • board[i][j]为'X'或'O'

994. 腐烂的橘子 - 力扣(LeetCode)

在给定的m x n网格grid中,每个单元格可以有以下三个值之一:

  • 值0代表空单元格;
  • 值1代表新鲜橘子;
  • 值2代表腐烂的橘子。

每分钟,腐烂的橘子周围 4 个方向上相邻的新鲜橘子都会腐烂。

返回直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回-1。

示例 1:

输入:grid = [[2,1,1],[1,1,0],[0,1,1]]输出:4

示例 2:

输入:grid = [[2,1,1],[0,1,1],[1,0,1]]输出:-1解释:左下角的橘子(第 2 行, 第 0 列)永远不会腐烂,因为腐烂只会发生在 4 个方向上。

示例 3:

输入:grid = [[0,2]]输出:0解释:因为 0 分钟时已经没有新鲜橘子了,所以答案就是 0 。

提示:

  • m == grid.length
  • n == grid[i].length
  • 1 <= m, n <= 10
  • grid[i][j]仅为0、1或2

1091. 二进制矩阵中的最短路径 - 力扣(LeetCode)

给你一个n x n的二进制矩阵grid中,返回矩阵中最短畅通路径的长度。如果不存在这样的路径,返回-1。

二进制矩阵中的 畅通路径 是一条从左上角单元格(即,(0, 0))到 右下角 单元格(即,(n - 1, n - 1))的路径,该路径同时满足下述要求:

  • 路径途经的所有单元格的值都是0。
  • 路径中所有相邻的单元格应当在8 个方向之一上连通(即,相邻两单元之间彼此不同且共享一条边或者一个角)。

畅通路径的长度是该路径途经的单元格总数。

示例 1:

输入:grid = [[0,1],[1,0]]输出:2

示例 2:

输入:grid = [[0,0,0],[1,1,0],[1,1,0]]输出:4

示例 3:

输入:grid = [[1,0,0],[1,1,0],[1,1,0]]输出:-1

提示:

  • n == grid.length
  • n == grid[i].length
  • 1 <= n <= 100
  • grid[i][j]为0或1

207. 课程表 - 力扣(LeetCode)

你这个学期必须选修numCourses门课程,记为0到numCourses - 1。

在选修某些课程之前需要一些先修课程。 先修课程按数组prerequisites给出,其中prerequisites[i] = [ai, bi],表示如果要学习课程ai则必须先学习课程bi。

  • 例如,先修课程对[0, 1]表示:想要学习课程0,你需要先完成课程1。

请你判断是否可能完成所有课程的学习?如果可以,返回true;否则,返回false。

示例 1:

输入:numCourses = 2, prerequisites = [[1,0]]输出:true解释:总共有 2 门课程。学习课程 1 之前,你需要完成课程 0 。这是可能的。

示例 2:

输入:numCourses = 2, prerequisites = [[1,0],[0,1]]输出:false解释:总共有 2 门课程。学习课程 1 之前,你需要先完成​课程 0 ;并且学习课程 0 之前,你还应先完成课程 1 。这是不可能的。

提示:

  • 1 <= numCourses <= 2000
  • 0 <= prerequisites.length <= 5000
  • prerequisites[i].length == 2
  • 0 <= ai, bi < numCourses
  • prerequisites[i]中的所有课程对互不相同

547. 省份数量 - 力扣(LeetCode)

有n个城市,其中一些彼此相连,另一些没有相连。如果城市a与城市b直接相连,且城市b与城市c直接相连,那么城市a与城市c间接相连。

省份是一组直接或间接相连的城市,组内不含其他没有相连的城市。

给你一个n x n的矩阵isConnected,其中isConnected[i][j] = 1表示第i个城市和第j个城市直接相连,而isConnected[i][j] = 0表示二者不直接相连。

返回矩阵中省份的数量。

示例 1:

输入:isConnected = [[1,1,0],[1,1,0],[0,0,1]]输出:2

示例 2:

输入:isConnected = [[1,0,0],[0,1,0],[0,0,1]]输出:3

提示:

  • 1 <= n <= 200
  • n == isConnected.length
  • n == isConnected[i].length
  • isConnected[i][j]为1或0
  • isConnected[i][i] == 1
  • isConnected[i][j] == isConnected[j][i]

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询