力扣(LeetCode)200. 岛屿数量(C++)

news2024/12/27 0:21:09

深度优先遍历

求连通块数量。可以遍历所有格子,当格子是岛屿,对岛屿深度优先遍历,找到整个岛,并且将遍历的岛屿标记,以免重复遍历,或递归死循环。标记可以使用状态数组,也可以修改格子的值。本题可以修改格子的值,更为直观与节约空间。

遍历小技巧 : 开方向数组 d x 、 d y dx、dy dxdy 对应上右下左四个方向,深搜每个格子时,代码一步到位。

class Solution {
public:
    int dx[4] = {-1,0,1,0},dy[4] = {0,1,0,-1};
    int n,m;
    int numIslands(vector<vector<char>>& grid) {
        n = grid.size(),m = grid[0].size();
        int ans = 0;
        for(int i = 0;i<n;i++)
            for(int j = 0;j<m;j++)
                if('1'==grid[i][j]) ans++,dfs(i,j,grid);
        return ans;
    }
    void dfs(int x,int y,vector<vector<char>> &grid){
        grid[x][y] = '0';
        for(int i = 0;i<4;i++){
            int a = x + dx[i],b = y + dy[i];
            if(a>=0&&a<n&&b>=0&&b<m&&'1'==grid[a][b]) dfs(a,b,grid);
        }
    }
};
  1. 时间复杂度 : O ( n ) O(n) O(n) n n n 是行数, m m m 是列数,最多遍历所有点两次,时间复杂度 O ( n ) O(n) O(n)
  2. 空间复杂度 : O ( n ) O(n) O(n) , 函数压栈的最坏深度为 O ( n ) O(n) O(n)

AC

AC

致语

  • 理解思路很重要!
  • 欢迎读者在评论区留言,墨染看到就会回复的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/111460.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SQL注入渗透与攻防(十)之加解密注入和堆叠注入

目录 SQL注入之加解密注入 案列演示 SQL注入之堆叠注入 案列演示 SQL注入之加解密注入 Base64是网络上最常见的用于传输8Bit字节码的编码方式之一&#xff0c;Base64就是一种基于64个可打印字符来表示二进制数据的方法。 案列演示 这里我们拿sql-libs的第二十一关来进行演…

学习TrustZone可以参考的资料

最近看到了一篇学习资料分享的&#xff0c;感觉可以转过来做个记录&#xff0c;除去前辈分享的资料以外&#xff0c;我还觉得ATF的源码里面的DOC目录下的资料也是很不错的&#xff0c;起码可以让你对BL31有个比较不错的认识。当然那个有点太细节了。 最近看PSA安全技术交流微信…

30多岁想转行,零基础学编程,来得及吗?

“30多岁想转行&#xff0c;零基础学编程&#xff0c;来得及吗&#xff1f;能找到好工作吗&#xff1f;”这类问题&#xff0c;总是反复出现。尤其是最近我受《自学是门手艺》鼓舞&#xff0c;也借着参与 xue.cn 的契机想要把 python 学的全面而完整&#xff0c;也总有朋友找我…

从工地打工,到狂揽10个大厂offer、副业赚100万:培训班出来的程序员是怎么做到的?

七年前我 985 毕业却沦落到工地打工&#xff0c;七年后我已经收到了 10 个大厂 offer 。 你好&#xff0c;我是吴师兄&#xff0c;一位曾经的学霸毕业只能去工地&#xff0c;而如今大厂 offer 拿到手软&#xff0c;Github 全球 TOP100 算法仓库创作者&#xff0c;公众号五分钟…

eclipse和sts安装lombok

eclipse和sts安装lombok 说明 sts 是 eclipse集成springboot的开发环境 所以 sts 和 eclipse 安装 lombok 步骤基本一样 参考网址: https://blog.csdn.net/qq_39826207/article/details/119007580?ops_request_misc%257B%2522request%255Fid%2522%253A%252216708973141680…

算法day57|647,516

目录 647. 回文子串 516.最长回文子序列 动态规划总结篇 647. 回文子串 dp数组的定义 dp[i][j]代表的是区间[i,j]的字串是否为回文字符&#xff0c;如果dp[i][j]为true,否则为false 递推公式 如果s[i]和s[j]相等的话 1.ij 为同一个字符&#xff0c;dp[i][j] True 2 i与j相差1…

Kafka大厂高频面试题:在保证高性能、高吞吐的同时保证高可用性

Kafka的消息传输保障机制非常直观。当producer向broker发送消息时&#xff0c;一旦这条消息被commit&#xff0c;由于副本机制&#xff08;replication&#xff09;的存在&#xff0c;它就不会丢失。但是如果producer发送数据给broker后&#xff0c;遇到的网络问题而造成通信中…

火山引擎 DataTester 上线“流程画布”功能,支持组合型 A/B 实验分析

更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 在精细化运营的时代&#xff0c;运营活动同样需要有精细化的策略&#xff0c;例如在年末大促活动中&#xff0c;设计 APP 弹窗提醒、满减、会员领券时&#xff0c;我…

C#语言实例源码系列-实现批量更改文件名称大小写或扩展名

专栏分享点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册 &#x1f449;关于作者 众所周知&#xff0c;人生是一个漫长的流程&#xff0c;不断克服困难&#xff0c;不断反思前进的过程。在这个过程中…

DeepLearning_Note

这里写目录标题深度学习框架深度学习开发万能公式模型的网络设计和开发&#xff1a;激活函数&#xff1a;几个数据参数&#xff1a;神经网络的输出零碎知识点&#xff1a;深度学习框架 深度学习开发万能公式 ① 问题定义 ② Paddle.vision.datasets&#xff08;内置数据集&am…

【ROS参数服务器】

参数服务器是以共享方式实现不同节点间数据交互的通信方式。主要用于存储多节点共享的数据&#xff0c;类似于全局变量。ROS中的参数服务器主要包含三个角色&#xff0c;分别是ROS Master(节点管理者)、Talker(参数设置者)、Listener(参数使用者)&#xff0c;其中Talker和Liste…

创新京东T7开创“新算法宝典”,图文并茂,全新演绎,太酷了

导言 算法是一门学问&#xff0c;但却总遭到一些程序员的冷落。现在的开发人员&#xff0c;更热衷于编程语言的修炼&#xff0c;以应付面试需求时的需要&#xff0c;所以对算法的学习&#xff0c;稍许忽略了些。实际上&#xff0c;近些年来&#xff0c;各互联网公司对于算法的…

【知识梳理】前端路由的两种模式

一、概述 这是几年前写的的一篇文章&#xff0c;发在了简书上面&#xff0c;现在看来仍然有一些不足&#xff0c;所以再次整理一下发在掘金。 二、什么是单页面应用&#xff08;SPA&#xff09;&#xff1f; 首先我们需要了解一下前置的基础知识————SPA&#xff08;单页面…

S3 #DooTrader 经典组冠军以良好盘感,创下近 900% 收益率摘得桂冠

本届 S3 #DooTrader 慈善杯全球交易大赛现已经进入白热化阶段&#xff0c;第二轮赛事冲刺在即&#xff0c;各位选手摩拳擦掌争取赢得最终的丰厚奖金。目前&#xff0c;领先的选手调整策略和仓位&#xff0c;以保持排位优势。我们看到现阶段经典组 TOP 1 选手已经创造了 1,300% …

WMS类图分析-android12

为什么要分析类图&#xff1f; WMS是一个复杂的模块&#xff0c;就像一个很大的家族&#xff0c;里面有各种角色&#xff0c;认识类图就像是认识WMS模块中的各个角色&#xff0c;不先把人认清楚了&#xff0c;怎么更好的理解他们之间的交互&#xff1f; 我觉得&#xff0c;这…

vue+antd搭建后台管理界面模版(PC端),适配中文、英文、日文 mock数据,开箱即用

vueantd搭建后台管理界面模版&#xff08;PC端&#xff09; 完整代码下载地址&#xff1a;vueantd搭建后台管理界面模版&#xff08;PC端&#xff09; 技术栈 vue2 vuex vue-router webpack ES6/7 axios antd 阿里图标iconfont 项目预览 http://nmgwap.gitee.io/vue…

【软件工程】实验4:校园二手物品交易过程的UI设计

文章目录校园二手物品交易过程的UI设计通过“用户画像”对用户群体进行分析校园二手物品交易过程UI设计&#xff08;Figma&#xff09;校园二手物品交易过程的UI设计 通过“用户画像”对用户群体进行分析 大学校园交易市场特点&#xff1a; 容量大。随着我国高等教育近年来的连…

Kubernetes部署_使用kubernetes部署Mysql主从结构(Kubernetes工作实践类)

文章目录一、前言二、实际操作步骤1&#xff1a;编写namespace脚本步骤2&#xff1a;编写configmap脚本步骤3&#xff1a;编写secret脚本(用来存放mysql密码)步骤4&#xff1a;编写initContainer脚本步骤5&#xff1a;编写StorageClass相关脚本1&#xff09;权限设置&#xff1…

干货分享 | To B业务的用户运营五要点

随着产业互联网格局的逐渐深化&#xff0c;近年来&#xff0c;To B业务逐渐被互联网改变和赋能。为了更高效地获客和服务&#xff0c;更多的运营手段逐渐被运用在To B业务之中&#xff0c;而To B运营也变得越来越重要。 作为一家To B企业&#xff0c;AdBright常常收到网友的提问…

YOLOV3论文学习

YOLOv3论文链接&#xff1a;https://pjreddie.com/media/files/papers/YOLOv3.pdf 综述 一、摘要 1、320*320的YOLOv3推理时间22ms&#xff0c;准确率28.2mAP&#xff0c;达到了SSD的精确度&#xff0c;推理速度却快了三倍。 2、基于.5mAp Iou 的YOLOv3的检测效果还比较不错&a…