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

Golang | Leetcode Golang题解之第542题01矩阵

题目:

题解:

type point struct{
    x, y int
}

var dirs = []point{{-1, 0}, {1, 0}, {0, -1}, {0, 1}}

func updateMatrix(mat [][]int) [][]int {
    var m, n = len(mat), len(mat[0])
    var res = make([][]int, m)
    var visited = make([][]bool, m)
    var queue []point
    for i := range mat{
        res[i] = make([]int, n)
        visited[i] = make([]bool, n)
        for j := range mat[i]{
            if mat[i][j] == 0 {
                queue = append(queue, point{i, j})
                visited[i][j] = true
            }
        }
    }
    for len(queue) != 0 {
        cur := queue[0]
        queue = queue[1:]
        for _, dir := range dirs{
            i, j := cur.x + dir.x, cur.y + dir.y
            if i >=0 && i < m && j >=0 && j < n && !visited[i][j]{
                res[i][j] = res[cur.x][cur.y] + 1
                queue = append(queue, point{i,j})
                visited[i][j] = true
            }
        }
    }
    return res
}

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

相关文章:

  • 人工智能未来前景好不好?
  • 宏集Cogent DataHub: 高效实现风电场数据集中管理与自动化
  • 删除 需要来自XXXX的权限才能对此文件夹进行更改 文件的解决办法
  • 牛客网Java高频面试题(2024最新版含答案)
  • 软件开发项目管理:实现目标的实用指南
  • 数据库->事务
  • Spring Boot 与 Vue 共筑航空机票预定卓越平台
  • Docker LLama-Factory vLLM 快速部署Meta-Llama-3.1-70B-Instruct
  • 银行卡二要素核验 API 对接说明
  • uniapp 实现瀑布流
  • LSTM+LightGBM+Catboost的stacking融合模型
  • Pr 视频过渡:沉浸式视频 - VR 默比乌斯缩放
  • 网络安全从入门到精通(特别篇II):应急响应之DDOS处置流程
  • ArcGIS地理空间平台 manager 任意文件读取漏洞复现
  • [C语言]strstr函数的使用和模拟实现
  • 《Java 实现堆排序:深入理解与代码剖析》
  • 如何选择适合的AWS EC2实例类型
  • VMWareTools安装及文件无法拖拽解决方案
  • SpringBoot之定时任务
  • 前端介绍|基础入门-html+css+js
  • Android View 的焦点控制基础
  • 【go从零单排】Strings and Runes 字符串和字符
  • 基于java+SpringBoot+Vue的宠物咖啡馆平台设计与实现
  • 进程和计划任务管理
  • MapReduce 的 Shuffle 过程
  • 基于matlab的人眼开度识别