golang力扣leetcode 542.01 矩阵

简介: golang力扣leetcode 542.01 矩阵

542.01 矩阵

542.01矩阵

题解

思路

BFS 从0进队列,弹出之后计算上下左右的结果,将上下左右重新进队列进行二层操作
0 0 0 0
0 x 0 0
x x x 0
0 x 0 0
0 0 0 0
0 1 0 0
1 x 1 0
0 1 0 0
0 0 0 0
0 1 0 0
1 2 1 0
0 1 0 0

代码

package main
func updateMatrix(mat [][]int) [][]int {
  var queue [][]int
  for i := 0; i < len(mat); i++ {
    for j := 0; j < len(mat[i]); j++ {
      if mat[i][j] == 0 {
        point := []int{i, j}
        queue = append(queue, point)
      } else {
        mat[i][j] = -1
      }
    }
  }
  dir := [][]int{{0, 1}, {0, -1}, {-1, 0}, {1, 0}}
  for len(queue) != 0 {
    //pop
    point := queue[0]
    queue = queue[1:]
    //bfs
    for _, v := range dir {
      x := point[0] + v[0]
      y := point[1] + v[1]
      //如果没有超出边界并且是-1的那些数
      if x >= 0 && x < len(mat) && y >= 0 && y < len(mat[0]) && mat[x][y] == -1 {
        mat[x][y] = mat[point[0]][point[1]] + 1
        queue = append(queue, []int{x, y})
      }
    }
  }
  return mat
}
目录
相关文章
|
4月前
|
存储 算法 NoSQL
LeetCode第73题矩阵置零
文章介绍了LeetCode第73题"矩阵置零"的解法,通过使用矩阵的第一行和第一列作为标记来记录哪些行或列需要置零,从而在不增加额外空间的情况下解决问题。
LeetCode第73题矩阵置零
|
2月前
|
程序员 C语言
【C语言】LeetCode(力扣)上经典题目
【C语言】LeetCode(力扣)上经典题目
|
2月前
|
索引
力扣(LeetCode)数据结构练习题(3)------链表
力扣(LeetCode)数据结构练习题(3)------链表
96 0
|
2月前
力扣(LeetCode)数据结构练习题(2)
力扣(LeetCode)数据结构练习题(2)
32 0
|
2月前
|
存储
力扣(LeetCode)数据结构练习题
力扣(LeetCode)数据结构练习题
59 0
|
2月前
|
算法 C++
Leetcode第59题(螺旋矩阵2)
这篇文章介绍了解决LeetCode第59题“螺旋矩阵II”的算法,通过C++编程实现按顺时针顺序填充一个n x n的正方形矩阵。
18 0
|
4月前
|
算法 Java
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
57 6
|
4月前
|
算法 JavaScript Python
【Leetcode刷题Python】79. 单词搜索和剑指 Offer 12. 矩阵中的路径
Leetcode第79题"单词搜索"的Python解决方案,使用回溯算法在给定的二维字符网格中搜索单词,判断单词是否存在于网格中。
55 4
|
4月前
|
算法 Python
【Leetcode刷题Python】73. 矩阵置零
本文介绍了LeetCode第73题的解法,题目要求在给定矩阵中将所有值为0的元素所在的行和列全部置为0,并提供了一种原地算法的Python实现。
38 0
【Leetcode刷题Python】73. 矩阵置零
|
3月前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行