首页 > 编程语言 >#yyds干货盘点# LeetCode程序员面试金典:01 矩阵

#yyds干货盘点# LeetCode程序员面试金典:01 矩阵

时间:2024-01-12 23:33:35浏览次数:38  
标签:yyds nj 01 dist ni int 金典 queue new

题目

给定一个由 0 和 1 组成的矩阵 mat ,请输出一个大小相同的矩阵,其中每一个格子是 mat 中对应位置元素到最近的 0 的距离。


两个相邻元素间的距离为 1 。


 


示例 1:




输入:mat = [[0,0,0],[0,1,0],[0,0,0]]

输出:[[0,0,0],[0,1,0],[0,0,0]]

示例 2:




输入:mat = [[0,0,0],[0,1,0],[1,1,1]]

输出:[[0,0,0],[0,1,0],[1,2,1]]

 

代码实现


class Solution {
    static int[][] dirs = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};

    public int[][] updateMatrix(int[][] matrix) {
        int m = matrix.length, n = matrix[0].length;
        int[][] dist = new int[m][n];
        boolean[][] seen = new boolean[m][n];
        Queue<int[]> queue = new LinkedList<int[]>();
        // 将所有的 0 添加进初始队列中
        for (int i = 0; i < m; ++i) {
            for (int j = 0; j < n; ++j) {
                if (matrix[i][j] == 0) {
                    queue.offer(new int[]{i, j});
                    seen[i][j] = true;
                }
            }
        }

        // 广度优先搜索
        while (!queue.isEmpty()) {
            int[] cell = queue.poll();
            int i = cell[0], j = cell[1];
            for (int d = 0; d < 4; ++d) {
                int ni = i + dirs[d][0];
                int nj = j + dirs[d][1];
                if (ni >= 0 && ni < m && nj >= 0 && nj < n && !seen[ni][nj]) {
                    dist[ni][nj] = dist[i][j] + 1;
                    queue.offer(new int[]{ni, nj});
                    seen[ni][nj] = true;
                }
            }
        }

        return dist;
    }
}


标签:yyds,nj,01,dist,ni,int,金典,queue,new
From: https://blog.51cto.com/u_15488507/9224706

相关文章

  • 【愚公系列】2024年01月 WPF控件专题 Calendar控件详解
    ......
  • 洛谷 P5359 [SDOI2019] 染色
    洛谷传送门LOJ传送门dp好题。首先有一个显然的状态,设\(f_{i,x,y}\)为第\(i\)列上下两格的颜色分别为\(x,y\)的方案数。但是这样做时间复杂度至少为\(O(nm^2)\),无法接受。注意到全\(0\)列的转移是重复的。我们可以试着只在两个相邻非全\(0\)列转移。这样我们需......
  • 板刷 2019~?的省选题
    看看会不会咕/cf除非极度不可做题,否则一般都是会写的。每个题限时思考\(30\min\),如果有想法可以延长;然后自己写/看题解。BJOI2019P5322排兵布阵\(\color{blue}\texttt{以前做过}\)比较水的,略。P5323光线\(\color{blue}\texttt{以前做过}\)考虑记\(f_i\)为直接穿......
  • 1.5A 电源模块TPSM5601R5HEXTRDAR、TPSM5601R5HRDAR使用增强型 Hotrod™ QFN封装
    采用增强型Hotrod™QFN封装的TPSM5601R5Hx60V输入、1V至16V输出、1.5A电源模块器件说明:TPSM5601R5Hx电源模块是一款高度集成的1.5A电源解决方案,在热增强型QFN封装内整合了一个带有功率MOSFET的60V输入降压直流/直流转换器、一个屏蔽式电感器和多个无源器件。此......
  • [GXYCTF2019]BabyUpload
    [GXYCTF2019]BabyUpload打开靶场看到个上传文件的选项,应该是上传文件漏洞上传个一句话木马文件尝试<?phpeval($_POST['cmd']);?>提示不能带有php的后缀改成jpg后缀,提示“上传类型也太露骨了吧!”修改了Content-Type为image/jpeg还是不行换了一种一句话木马GIF89a<sc......
  • [极客大挑战 2019]Secret File 1
    [极客大挑战2019]SecretFile1审题看到题目应该是一道简单的按照要求找flag的题目知识点跟着题目走解题一,查看源码找到网站进入点开发现【注意它说没看清吗】二,使用BP抓包试试发现新出现了/action.php抓到后放到Repeater中响应得到一个新的网址secr3t.php打......
  • 认识git使用git-01基础认识以及使用
     首先要下载并且安装git下载地址Git(git-scm.com)安装傻瓜式安装目录一.设置用户信息二.为常用指令配置别名编辑三.获取本地仓库1.要使用Git对我们的代码进行版本控制,首先需要获得本地仓库四.基础操作指令1.一次提交的过程编辑2.实现版本回退3.如果在文件夹中又不想提交的文件一.......
  • Powershell定义变量及注意事项-01
    在定义和使用PowerShell变量之前,需要注意以下几点:变量名不得包含空格或特殊字符:变量名只能包含字母、数字和下划线。变量名不能以数字开头,也不能包含空格或其他特殊字符。变量名区分大小写:在PowerShell中,变量名是区分大小写的。因此 $name 和 $Name 是两个不同的变量。变......
  • ORA-01041: internal error: hostdef extension doesn't exist错误侦察
    如果在使用netca工具安装监听时就发生了ORA-01041:internalerror:hostdefextensiondoesn'texist的错误,可能是由于配置或环境设置的问题。以下是一些建议的步骤:检查环境变量:确保ORACLE_HOME和ORACLE_SID等必要的环境变量已经正确设置。在使用netca工具时,确保使用了......
  • 20230109
    top70020240104-0520240106-720240108极限 极 0 00感情 感 0 00应该 应 0 00因为 因 0 00因为欢迎 迎 0 00忘却 却 0 00投靠 投 0 00休息 息 0 00广告 告 0 00留下 留 0 00领带 领 0 00团结 结 0 01错误 错 0 00一百 百 0 00忽然 忽 0 00从前 从 0 01愿意 愿 ......