2.Shortest Bridge
题目描述
给定一个二维 0-1 矩阵,其中 1 表示陆地,0 表示海洋,每个位置与上下左右相连。已知矩阵中有且只有两个岛屿,求最少要填海造陆多少个位置才可以将两个岛屿相连。
输入是一个二维整数数组,输出是一个非负整数,表示需要填海造陆的位置数。
Input:
[[1,1,1,1,1],
[1,0,0,0,1],
[1,0,1,0,1],
[1,0,0,0,1],
[1,1,1,1,1]]
Output: 1
思路:
- 找到其中一个岛屿,用深度优先算法将其区分出来(即将1变为2)。
- 用广度优先搜索,找寻到达另一个岛屿的最短路径。
import java.util.LinkedList;
import java.util.Queue;
public class ShortBri {
public static int[] directions = {
-1,0,1,0,-1};//相邻两数代表一个方向
public static int shortestBirge(int[][] gird){
int row = gird.length;//行数
int col = gird[0].length;//列数
Queue<Point> points = new LinkedList<>();
boolean flag = false;
for (int i = 0; i < row; i++) {
if (flag) break;
for (int j = 0; j < col; j++) {

本文介绍了一种解决二维矩阵中最短桥问题的方法。通过深度优先搜索将一个岛屿标记,并使用广度优先搜索寻找连接到另一个岛屿的最短路径。文章提供了完整的Java实现代码。
最低0.47元/天 解锁文章
570

被折叠的 条评论
为什么被折叠?



