【算法速刷(7/100)】LeetCode —— 200.岛屿数量

news2024/12/22 15:34:59

 这题是典型的深搜题,只需要额外记录每个格子是否被搜索过,然后挨个进行陆地的深度搜索即可。(如果要使用lambda进行递归,需要显式指出变量的模板类型,不能使用auto推导)

int numIslands(vector<vector<char>>& grid) {
        //O(n)时间复杂度遍历每一个格子,O(n)的空间复杂度记录每一个位置是否访问过
        //一旦出现陆地且未访问过,数量加一,进行深搜
        //遍历完成返回结果

        int m = grid.size(), n = grid[0].size();
        int res = 0;

        vector<vector<bool>> visited(m, vector<bool>(n, false));

        function<void(int, int)> dfs = [&](int x, int y)
        {
            if(x < 0 || y < 0 || x >= m || y >= n)
                return;

            if(grid[x][y] == '0' || visited[x][y])
                return;

            visited[x][y] = true;

            dfs(x + 1, y);
            dfs(x - 1, y);
            dfs(x, y + 1);
            dfs(x, y - 1);
        };

        for(int i = 0; i < grid.size(); i++)
        {
            for(int j = 0; j < grid[0].size(); j++)
            {
                if(grid[i][j] == '1' && !visited[i][j])
                {
                    res++;
                    dfs(i, j);
                }
            }
        }

        return res;
    }

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

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

相关文章

vue+ckEditor5 复制粘贴wold文字+图片并保存格式

第一步在vue2项目下安装 npm install --save ckeditor/ckeditor5-build-decoupled-document 第二 项目下新建一个plugins的文件夹将这个包ckeditor5-build-classic放入 &#xff08;包在页面最上方 有个下载按钮 可以下载&#xff09; 刚开始时 ckeditor5-build-classic文件…

ai人工智能伪原创,文章伪原创的不二选择

文章伪原创我们可以通过人工手动去完成&#xff0c;也可以通过伪原创工具去完成&#xff0c;但随着技术的发展&#xff0c;越来越多的人在做文章伪原创处理时都不再选择人工低效率的去完成&#xff0c;而是选择用ai人工智能伪原创工具实现自动完成&#xff0c;这不仅能提升文章…

百元护眼台灯哪家强?看书客、孩视宝和飞利浦护眼台灯哪个好?

护眼台灯顾名思义有着“护眼”功能&#xff0c;因此收到许多家庭的喜爱&#xff0c;许多家长纷纷给孩子选购一台护眼台灯以达到保护视力健康的效果。然而&#xff0c;随着护眼台灯的爆红&#xff0c;市面上大多数护眼灯质量良莠不齐&#xff0c;有着做工粗糙、劣质灯珠导致视力…

面试必备之——TCP/UDP(一)

OSI七层模型、TCP/IP四层五层模型 &#xff08;.森木磊石&#xff09;&#xff08;金美&#xff09; 1、应用层&#xff1a;&#xff08;七层变为三层&#xff09;是用户与网络的交互层&#xff0c;负责提供各种应用程序和服务。协议例如HTTP、FTP、TFTP等。 应用层&#xff1…

同城便民生活小程序源码系统 二手市场+求职招聘+招聘信息 到源码包以及搭建教程

系统概述 同城便民生活小程序源码系统&#xff0c;是一款专为满足城市居民日常需求而设计的综合服务平台。该系统集成了二手市场、求职招聘、招聘信息三大核心模块&#xff0c;旨在通过数字化手段&#xff0c;优化资源配置&#xff0c;促进信息流通&#xff0c;让城市居民的生…

密码学基础:彩虹表技术

文章目录 一、前期准备1.1 前缀知识1.2 工具准备 二、彩虹表技术2.1 什么是彩虹表&#xff1f;2.2 彩虹表预先计算的散列链原理2.3 其他通过加密摘要攻击用户密码的技术2.4 彩虹表存储规格2.6 彩虹表生成、排序、合并和转换命令 三、彩虹表攻击示例3.1 安装 rainbowcrack3.2 生…

Git是如何工作的

Git 是一个分布式的版本控制系统&#xff0c;这意味着它使用多个本地存储库&#xff0c;包括一个集中式存储库和服务器&#xff0c;它在从前端工作中抽象出底层机制方面做得非常出色。虽然 Git 已经演变成一个成熟的版本控制管理系统&#xff0c;但这并不是作者最初的意图&…

网络硬盘录像机NVR程序源码和NVR模组展示及设备开机配置和主界面使用介绍

NVR软硬一体机支持录像设置&#xff0c;还具有录像回放、录像备份和报警设置等多种功能。接下来&#xff0c;我们首先看一下硬件连接&#xff0c;并开机后的基础配置操作。 NVR的优势&#xff08;包括不限于&#xff09;&#xff1a; 1.支持录像回放 支持设置冗余录像&#…

Java开发中使用腾讯云OCR进行身份证识别与COS云存储实践

文章目录 完整代码代码讲解总结 在Java开发中&#xff0c;处理身份证识别和云存储是一项常见的需求&#xff0c;尤其是在需要用户身份验证的应用场景中。今天&#xff0c;我想和大家分享一个实际的案例&#xff0c;展示如何利用腾讯云的OCR服务进行身份证识别&#xff0c;并将识…

记一次:Datawhale AI夏令营-第四期-魔搭-AIGC-Task03

前言&#xff1a;书接上回&#xff0c;前面说了AIGC的了解和精读baseline&#xff0c;那么我们可以再次的抽丝拔茧&#xff0c;开始了解GUI部分和微调部分。 一、ComfyUI应用部分 1、什么是GUI&#xff1f; 2、什么是ComfyUI&#xff1f; 3、ComfyUI核心模块 4、ComfyUI图片生…

搭建高可用OpenStack(Queen版)集群(七)之部署dashbord(Horizon)控制节点集群

一、搭建高可用OpenStack&#xff08;Queen版&#xff09;集群之部署dashbord&#xff08;Horizon&#xff09;控制节点集群 一、Dashboard(horizon)简介 Dashboard(horizon)是一个web接口&#xff0c;使得云平台管理员以及用户可以管理不同的openstack资源及服务。 二、部署da…

AAAI Reproducibility Checklist Latex 模板

官网介绍 AAAI-25 Reproducibility Checklist - AAAI This paper: Includes a conceptual outline and/or pseudocode description of AI methods introduced (yes/partial/no/NA)Clearly delineates statements that are opinions, hypothesis, and speculation from object…

Science Robotics封面 | 当机器人学会用‘快照‘导航,轻重量小内存实现‘长途跋涉‘

一个仅重56克的微型无人机实现了自主视觉导航&#xff0c;这听起来似乎不可思议。 然而&#xff0c;荷兰代尔夫特理工大学的研究人员通过向大自然学习&#xff0c;成功让这样一个轻如鸿毛的小家伙完成了长达100米的自主视觉路径跟随。 这一突破性成果不仅为微型机器人的自主导…

【Vue3】高颜值后台管理模板推荐

ELP - 权限管理系统 基于Vue 3框架与PrimeVue UI组件库技术精心构建的高颜值后台权限管理系统模板。该模板系统已成功实现基于RBAC&#xff08;Role-Based Access Control&#xff09;模型的权限管理系统和字典数据管理模块&#xff0c;后端则使用了Spring Boot框架&#xff0…

008 | 基于RNN和LSTM的贵州茅台股票开盘价预测

&#x1f449;&#x1f449;&#x1f449; 《玩转Python金融量化专栏》&#x1f448;&#x1f448;&#x1f448; 订阅本专栏的可以下载对应的代码和数据集 &#x1f680; 上一篇&#x1f31f; 下一篇⬅️ 007 期权定价与布莱克-斯科尔斯计算009 上证50ETF基金数据分析及预测…

WebRTC音视频开发读书笔记(一)

一、基本概念 WebRTC(Web Real-Time Communication&#xff0c;网页即时通信)于2011年6月1日开源&#xff0c;并被纳入万维网联盟的W3C推荐标准&#xff0c;它通过简单API为浏览器和移动应用提供实时通信RTC功能。 1、特点 跨平台&#xff1a;可以在Web&#xff0c;Android、…

Unity扩展 Text 彩虹文本

本文章用于原生组件 Text 的扩展 TextRainbow&#xff0c;对于新版TextMeshPro不适用。 一、效果预览图&#xff1a; 默认&#xff1a; 随机&#xff1a; 循环&#xff1a; 二、原理 通过强制刷新顶点数据&#xff0c;来修改颜色。 通过Unity中自带的 BaseMeshEffect 抽…

五、OpenCVSharp 中的图像滤波与平滑

文章目录 简介一、均值滤波1. 原理和数学公式2. 不同大小的滤波核效果对比3. 边界处理方式二、高斯滤波1. 高斯核的生成2. 标准差对滤波效果的影响3. 高斯滤波的应用场景(如去除高斯噪声)三、中值滤波1. 中值的计算方法2. 中值滤波对椒盐噪声的处理效果3. 中值滤波的性能分析…

AWS Lambda 十年回顾:功能总览、更新记录与入门指南

这次&#xff0c;我为2014年11月发布的AWS Lambda创建了一个历史时间表。AWS Lambda 是一项无服务器、全托管的代码执行服务&#xff0c;今年2024年11月将迎来其宣布发布的十周年纪念。虽然提前了一些&#xff0c;但为了提前庆祝这一重要时刻&#xff0c;我写了这篇文章。 文章…

空间间隔组(Spacers)-Qt-思维导图-学习笔记

空间间隔组&#xff08;Spacers&#xff09; 空间间隔组&#xff08;Spacers&#xff09; &#xff08;1&#xff09;Horizontal Spacer:水平间隔 &#xff08;2&#xff09;Vertical Spacer:垂直间隔 QSpacerItem 控件简介 继承关系&#xff1a;QSpacerItem 继承自 QLayou…