首页 > 其他分享 >LeetCode----二维网格DFS

LeetCode----二维网格DFS

时间:2023-06-08 17:24:58浏览次数:62  
标签:return int self dfs ---- grid DFS len LeetCode

1 算法模板

void dfs(int[][] grid, int r, int c) {
    // 判断 base case
    // 如果坐标 (r, c) 超出了网格范围,直接返回
    if (!inArea(grid, r, c)) {
        return;
    }
    // 访问上、下、左、右四个相邻结点
    dfs(grid, r - 1, c);
    dfs(grid, r + 1, c);
    dfs(grid, r, c - 1);
    dfs(grid, r, c + 1);
}

// 判断坐标 (r, c) 是否在网格中
boolean inArea(int[][] grid, int r, int c) {
    return 0 <= r && r < grid.length 
        	&& 0 <= c && c < grid[0].length;
}

2 代码

200. 岛屿数量

class Solution:
    def dfs(self, grid, i, j):
        # 边界处理
        if i < 0 or j < 0 or i >= len(grid) or j >= len(grid[0]):
            return
        
        # base case
        if grid[i][j] == "0":
            return
        
        if grid[i][j] == "1":
            grid[i][j] = "-1"
            self.dfs(grid, i, j - 1)
            self.dfs(grid, i, j + 1)
            self.dfs(grid, i + 1, j)
            self.dfs(grid, i - 1, j)


    def numIslands(self, grid: List[List[str]]) -> int:
        cnt = 0
        for i in range(len(grid)):
            for j in range(len(grid[i])):
                if grid[i][j] == "1":
                    self.dfs(grid, i, j)
                    cnt += 1
        return cnt

标签:return,int,self,dfs,----,grid,DFS,len,LeetCode
From: https://www.cnblogs.com/liuyechang/p/17467121.html

相关文章

  • Java基础之基础语法与面向对象
    前言小知识Java由Sun公司于1995年推出,2009年Sun公司被Oracle公司收购,取得Java的版权Java之父:JamesGosling(詹姆斯·高斯林) 专业术语JDK:javadevelopmentkit(java开发工具包)JRE:javaruntimeenvironment(java运行环境)JVM:javavirualma......
  • C# 批量复制文件到新路径并修改文件名
    1staticvoidMain(string[]args)2{3Console.WriteLine("将去除前缀字符:[normal-]和后缀");45Console.WriteLine("请输入需要新文件存放夹路径:");6stringnewpath=Console.ReadLine();7ch......
  • 什么是DS(Dedicated Server)
    本片博客参考:UE5DedicatedServer专用服务器与网络同步因为我之前是参与Web后端开发的,所以对游戏的服务器的理解还停留在上学时,也就是客户端不参与实际的运算,所有的运算与数据的下发都由服务器去控制,然后前后端分离。首先我们需要明确一个认知—UE5的客户端代码和服务器代码是......
  • C++模板
    模板分为函数模板和类模板函数模板模板的语法建立一个通用函数,其函数返回值类型和形参类型可以不具体制定1template<typenameT>2voidmySwap(T&a,T&b){3Ttemp=a;4a=b;5b=temp;6}7intmain(){8inta=10;9intb......
  • vscode对比不同路径下的两个文件
    一、模拟环境 test目录下有两个文件夹,a和b 里面分别放着aa.txt 和bb.txt绝对路径:~/test/a/aa.txt~/test/b/bb.txt 二、命令行启动vscode对比$code--diffa/aa.txtb/bb.txt 三、使用vscode命令面板1.先用命令打开一个文件(模拟已经在查看的文件......
  • uniapp+微信小程序+vue3 实现富文本编辑器遇到的坑
     问题一:富文本编辑器初始化实例出不来,有两个原因:找的参考代码不适用微信小程序,需要用.in(this)uni.createSelectorQuery().in(this).select("#editor").context(res=>{this.editorCtx=res?.context;}).ex......
  • Vue全局事件总线(GlobalEventBus)
    Vue全局事件总线1、一种组件间通信的方式,适用于任意组件间通信。2、安装全局事件总线//main.js中安装全局事件总线newVue({render:h=>h(App),beforeCreate(){Vue.prototype.$bus=this//安装全局事件总线,$bus就是当前的vue实例}}).$mount('#app')......
  • 智能座舱之蓝牙模块测试要点
    智能座舱蓝牙模块是车辆中的一项重要功能,用于提供与移动设备的无线连接,例如手机、音乐播放器等。下面是对智能座舱蓝牙模块测试的详细介绍:1.连接和配对测试测试蓝牙模块的连接性能,验证其能够与各种类型的设备进行配对和连接。验证蓝牙模块的连接稳定性,包括在连接过程中的自......
  • macOS 14 Sonoma(苹果最新系统)测试版
    macOS14Sonoma下载2023苹果全球开发者大会上,苹果宣布macOS下版本定名为Sonoma。此次升级,让Mac体验更加出色。比如提供了全新升级的小组件功能、独有的Mac游戏功能、远程演讲模式以及针对Safari浏览器新增了多种新功能。 macOS14系统新增小组件功能在此之前,Mac的......
  • 最新PS bate 爱国版更新,支持AI创意填充
    最新PSbeta爱国版更新了,小编第一时间为大家带来了photoshopbeta完美激活破解版资源。最新Photoshop集成AI后,新的功能深受设计师的喜爱。 具体功能:生成对象:选择图像中的一个区域,然后通过文本提示描述您想要添加/替换的内容。生成背景:选择主题背后的背景,然后根据文本提示生......