news 2026/5/1 7:27:54

【剑斩OFFER】算法的暴力美学——力扣 1162 题:地图分析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【剑斩OFFER】算法的暴力美学——力扣 1162 题:地图分析

一、题目描述

二、算法原理

思路:使用多源 BFS 算法

1)先创建一个二维数组来统计距离,再标记陆地的距离为 0,此时把陆地的坐标入队列

2)使用 BFS 算法统计陆地到上下左右的海洋的距离:

3)此时当队列为空时,此时当前坐标的值就是陆地到海洋的最大距离;

三、代码实现

class Solution { int dx[4] = {0,0,-1,1}; int dy[4] = {1,-1,0,0}; typedef pair<int,int> PII; public: int maxDistance(vector<vector<int>>& grid) { //使用多源 BFS int n = grid.size(),m = grid[0].size(); vector<vector<int>> vis(n,vector<int>(m,-1));//统计陆地到海洋的距离 queue<PII> que; for(int i = 0; i < n; i++)//标记陆地的距离为0 { for(int j = 0; j < m; j++) { if(grid[i][j] == 1) { vis[i][j] = 0; que.push({i,j});//让陆地的坐标入队列 } } } while(que.size())//BFS { auto [x,y] = que.front(); que.pop(); for(int i = 0; i < 4; i++) { int a = x + dx[i]; int b = y + dy[i]; if(a >= 0 && b >= 0 && a < n && b < m && vis[a][b] == -1 && grid[a][b] == 0) { vis[a][b] = vis[x][y] + 1; que.push({a,b}); } } if(que.empty() && vis[x][y]) return vis[x][y];//陆地到海洋的最大距离 } return -1; } };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 0:12:34

最新“学生必考”AI证书,真的在慢慢贬值吗?

打开各大高校的考证交流群&#xff0c;AI证书依旧是高频话题——从大一大二的入门认证&#xff0c;到研究生阶段的进阶证书&#xff0c;几乎每个想抢占职场先机的学生&#xff0c;都在跟风加入考证大军。但与此同时&#xff0c;“AI证书遍地都是&#xff0c;考了也没用”“持证…

作者头像 李华
网站建设 2026/4/25 16:29:18

Flutter for OpenHarmony 视力保护提醒App实战 - 错误处理与异常管理

概述 错误处理和异常管理是应用开发的重要方面&#xff0c;它直接影响应用的稳定性和用户体验。在视力保护提醒应用中&#xff0c;我们采用了完整的错误处理机制来确保应用的稳定运行。本文将详细讲解如何进行错误处理和异常管理&#xff0c;包括异常捕获、错误提示、日志记录…

作者头像 李华