leecode1254.统计封闭岛屿的数目

news/2025/3/19 8:06:31/

这道题咋一看很难,但是可以转换,将所有靠近边界的非封闭岛屿都变成海洋后,那么剩下的岛屿就是封闭岛屿,最后的问题其实就是求解连通分量个数 

class Solution {
private:void closedIsland(vector<vector<int>>& grid,int x,int y){if(x<0||y<0||x>=grid.size()||y>=grid[0].size())return;else if(grid[x][y]==1)return;else{grid[x][y]=1;closedIsland(grid,x,y+1);closedIsland(grid,x+1,y);closedIsland(grid,x,y-1);closedIsland(grid,x-1,y);}}
public:int closedIsland(vector<vector<int>>& grid) {int result=0;int m=grid.size();int n=grid[0].size();//将靠近上边界和下边界的非封闭岛变成海洋for(int i=0;i<n;i++){closedIsland(grid,0,i);closedIsland(grid,m-1,i);}//将左边界和右边界的非封闭岛变成海洋for(int i=0;i<m;i++){closedIsland(grid,i,0);closedIsland(grid,i,n-1);}//由此问题转化为求岛屿的数目for(int i=0;i<m;i++)for(int j=0;j<n;j++)if(grid[i][j]==0){result++;closedIsland(grid,i,j);}return result;}
};

 


http://www.ppmy.cn/news/1580268.html

相关文章

leetcode每日一题:对角线上的质数

题目 给你一个下标从 0 开始的二维整数数组 nums 。 返回位于 nums 至少一条 对角线 上的最大 质数 。如果任一对角线上均不存在质数&#xff0c;返回 0 。 注意&#xff1a; 如果某个整数大于 1 &#xff0c;且不存在除 1 和自身之外的正整数因子&#xff0c;则认为该整数是…

UNI-APP uts插件 支持ANDROID 监听手机状态

插件地址 https://ext.dcloud.net.cn/plugin?id22646 模块 import {startPhoneListener,stopPhoneListener,checkIsAutoRecord,toCallAutoRecorderPage,navigateToCallRecordingSettings,jumpToPermissionPage,makePhoneCall,allRecorderFilesAction,registerSmsReceiver,} f…

【实战ES】实战 Elasticsearch:快速上手与深度实践-附录-3-从ES 7.x到8.x的平滑迁移策略

&#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 附录-版本升级指南 3-Elasticsearch 7.x 到 8.x 平滑迁移策略指南1. 升级必要性分析1.1 版本特性对比1.2 兼容性评估矩阵 2. 预升级准备清单2.1 环境检查表2.2 数据备份策略 3. 分阶段…

3.18学习总结 JAVA方法

流程跳转语句&#xff1a;break,continue break&#xff1a;在switch中结束case条件判断&#xff0c;在循环体中结束循环continue&#xff1a;作用在循环体中&#xff0c;结束循环体的本次循环&#xff0c;而进入下次循环 方法&#xff1a; 类似于c语言的函数 注意&#xff…

Python 常用内建模块-argparse

目录 argparse 小结 argparse 在命令行程序中&#xff0c;经常需要获取命令行参数。Python内置的sys.argv保存了完整的参数列表&#xff0c;我们可以从中解析出需要的参数&#xff1a; # copy.py import sys print(sys.argv) source sys.argv[1] target sys.argv[2] # TOD…

3.17学习总结

完成了一道算法题&#xff0c;终于自己独立写出了一道二叉树的题了 bool isSameTree(struct TreeNode* p, struct TreeNode* q) {if(pNULL&&qNULL) return true;if(pNULL||qNULL) return false;if(p->val!q->val) return false;if(p->leftNULL&&…

【C++基础】CMake项目

CMake 项目简介 CMake 是一个跨平台的构建工具&#xff0c;用于管理 C/C 项目的编译过程。它通过生成标准的构建文件&#xff08;如 Makefile、Visual Studio 项目文件、Ninja 构建文件等&#xff09;来简化项目的构建流程。CMake 的核心是 CMakeLists.txt 文件&#xff0c;它…

C++输入输出流第一弹:标准输入输出流 详解(带测试代码)

目录 C输入输出流 流的四种状态&#xff08;重点&#xff09; 标准输入输出流 标准输入流 逗号表达式 1. 逗号表达式的基本规则 示例 2. 图片中的代码分析 关键点解析 3. 常见误区 误区 1&#xff1a;逗号表达式等同于逻辑与 && 误区 2&#xff1a;忽略输入…