当前位置: 首页 > article >正文

Leetcode 200 Number of Islands

题意

给定一个二维矩阵,只含有0和1,1连接成片构成岛屿。求有多少个这样的岛屿

题目链接

https://leetcode.com/problems/number-of-islands/description/

思路

遍历二维矩阵,从遍历到之前没有visit到的1开始dfs, dfs是用来mark 已经遍历到的点为visited过。 并且每次遇到没有visit过的1时计数。

题解

class Solution {
public:
    int m;
    int n;
    int numIslands(vector<vector<char>>& grid) {
        int res = 0;
        m = grid.size();
        n = grid[0].size();
        vector<vector<bool>> vis(m,vector<bool>(n,false));

        for(int i = 0; i < m; i++) {
            for(int j = 0; j < n; j++) {
                if(grid[i][j] == '1' && !vis[i][j]) {
                    dfs(grid, vis, i, j);
                    res += 1;
                }
            }
        }
        return res;
    }

    void dfs(vector<vector<char>>& grid, vector<vector<bool>>& vis,int x, int y) {
        vis[x][y] = true;
        int dk[] = {-1, 0, 1, 0, -1};
        for(int i = 0; i < 4; i++) {
            int nx = x + dk[i];
            int ny = y + dk[i+1];
            if(nx >= 0 && nx < m && ny >= 0 && ny < n && !vis[nx][ny] && grid[x][y] == '1') {
                dfs(grid, vis, nx, ny);
            }
        }
    }

};

时间复杂度: O ( m n ) O(mn) O(mn) m,n 为二维矩阵的长宽
空间复杂度: O ( m n ) O(mn) O(mn) m,n 为二维矩阵的长宽


http://www.kler.cn/a/453895.html

相关文章:

  • 指针与数组:深入C语言的内存操作艺术
  • Java开发经验——数据库开发经验
  • Jensen-Shannon Divergence:定义、性质与应用
  • Linux服务器centos7安装mysql
  • 数据仓库工具箱—读书笔记02(Kimball维度建模技术概述04、使用一致性维度集成)
  • J9学习打卡笔记
  • c++最大公约数和最小公倍数的深入剖析
  • Oracle Database 23ai 中的DBMS_HCHECK
  • AWS Certified AI Practitioner 自学考试心得
  • 关于FPGA的IO三引脚形式
  • 【YOLO】(基础篇一)YOLO介绍
  • TiDB 的MPP架构概述
  • Python进阶之opencv图片和视频基本读取关闭
  • Java后端开发 ”Bug“ 分享——订单与优惠卷
  • 离心式压缩机设计的自动化方法
  • matlab中的cell
  • 【每日学点鸿蒙知识】类型判断、three.js支持情况、Grid拖动控制、子窗口路由跳转、真机无法断点
  • OpenHarmony 3.2 调用获取指定网络接口信息报错,DHCP报错:callback error 29189
  • 人工智能python快速入门
  • 初始化全部推断的寄存器、 SRL 和存储器
  • 两分钟掌握 TDengine 全部写入方式
  • 目录jangow-01-1.0.1靶机
  • Eclipse常用快捷键详解
  • 【3.1 以太网RDMA优化--网卡缓存资源维度】
  • Android--java实现手机亮度控制
  • react高阶组件及hooks