Leetcode542. 01 矩阵 题目:

给定一个由 0 和 1 组成的矩阵,找出每个元素到最近的 0 的距离。
两个相邻元素间的距离为 1 。

示例 1:
输入:

0 0 0
0 1 0
0 0 0

输出:

0 0 0
0 1 0
0 0 0

示例 2:
输入:

0 0 0
0 1 0
1 1 1

输出:

0 0 0
0 1 0
1 2 1

注意:

  1. 给定矩阵的元素个数不超过 10000。
  2. 给定矩阵中至少有一个元素是 0。
  3. 矩阵中的元素只在四个方向上相邻: 上、下、左、右。

想法思路:

  1. 首先得到一个0,1二维数组,创建一个与该二维数组一样大小的二维数组并初始化,初始化时对该二维数组原本为0的地方设为0,原本有数字的地方设为一个最大值(上限+1)
  2. 然后进行第一次遍历,从左到右、从上到下重新赋值;
  3. 然后进行第二次遍历,从右到左、从下到上重新赋值。

具体代码实现如下所示:

import java.util.Arrays;public class Leetcode542_01 {static class Solution {int[][] updateMatrix(int[][] matrix) {if (matrix == null || matrix.length == 0) return null;int m = matrix.length, n = matrix[0].length;int[][] res = new int[m][n];//初始化for (int i = 0; i < m; i++) {Arrays.fill(res[i], 10001);}for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {if (matrix[i][j] == 0) res[i][j] = 0;}}//动态规划//从左到右、从上到下重新赋值for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {if (i - 1 >= 0) {res[i][j] = Math.min(res[i][j], res[i - 1][j] + 1);}if (j - 1 >= 0) {res[i][j] = Math.min(res[i][j], res[i][j - 1] + 1);}}}//从右到左、从下到上重新赋值for (int i = m - 1; i >= 0; i--) {for (int j = n - 1; j >= 0; j--) {if (i + 1 < m) {res[i][j] = Math.min(res[i][j], res[i + 1][j] + 1);}if (j + 1 < n) {res[i][j] = Math.min(res[i][j], res[i][j + 1] + 1);}}}return res;}}public static void main(String[] args) {Solution solution = new Solution();int[][] a = {{0, 0, 0},{0, 1, 0},{1, 1, 1}};int[][] b = solution.updateMatrix(a);for (int i = 0; i < b.length; i++) {for (int j = 0; j < b[0].length; j++) {System.out.print(b[i][j] + " ");}System.out.println();}}
}

2020.4.15打卡

Rayman的绝顶之路——Leetcode每日一题打卡1相关推荐

  1. LeetCode每日一题打卡组队监督!刷题群!

    近 2000 人已经加入共同刷题啦! 群友每天都会在群里给大家讲解算法题 每周日「负雪明烛」组织直播讲题 我相信来看我博客的大部分人都是通过LeetCode刷题过来的.最近发现LeetCode中文网站 ...

  2. 关于LeetCode每日一题打卡失败的感悟

    背景 今年5月,报名参加了三叶姐的"五月打卡活动",押金29.9元,要求每天在力扣上每日一题打卡,完成则押金全退,完不成则押金不退. 事件 2022.5.10,LeetCode上的 ...

  3. Leetcode每日一题(914. 卡牌分组)

    914. 卡牌分组 题目: 给定一副牌,每张牌上都写着一个整数. 此时,你需要选定一个数字 X,使我们可以将整副牌按下述规则分成 1 组或更多组: 每组都有 X 张牌. 组内所有的牌上都写着相同的整数 ...

  4. LeetCode 每日一题打卡:334.递增的三元子序列

    题目 334.递增的三元子序列 题目大意 给你一个整数数组numsnumsnums ,判断这个数组中是否存在长度为333的递增子序列. 如果存在这样的三元组下标(i,j,k)(i, j, k)(i,j ...

  5. 【Leetcode 每日一题】514. 自由之路(BFS+优先队列)

    Leetcode 每日一题 题目链接:514. 自由之路 难度: 困难 解题思路: 这道题乍一看,可以选择用动态规划或者BFS来求解.本文使用BFS来进行解答.注意到题中有一个最小的到路径.所以我们可 ...

  6. leetcode每日刷题计划-简单篇day8

    leetcode每日刷题计划-简单篇day8 今天是纠结要不要新买手机的一天QAQ想了想还是算了吧,等自己赚钱买,加油 Num 70 爬楼梯 Climbing Stairs class Solutio ...

  7. Leetcode每日一题:171.excel-sheet-column-number(Excel表列序号)

    思路:就是168题的反命题,进制的方式完美解决: Leetcode每日一题:168.excel-sheet-column-title(Excel表名称) class Solution {public: ...

  8. 【LeetCode每日一题】1723. 完成所有工作的最短时间

    [LeetCode每日一题]1723. 完成所有工作的最短时间 [1] 1723. 完成所有工作的最短时间 [2] 473. 火柴拼正方形 [1] 1723. 完成所有工作的最短时间 题目: 给你一个 ...

  9. leetcode每日一题--雀巢原理;抽屉算法;Quorum机制;分布式应用

    leetcode每日一题 539. 最小时间差 示例 1: 输入:timePoints = ["23:59","00:00"] 输出:1 示例 2: 输入:ti ...

  10. LeetCode每日一题——1812. 判断国际象棋棋盘中一个格子的颜色

    LeetCode每日一题系列 题目:1812. 判断国际象棋棋盘中一个格子的颜色 难度:简单 文章目录 LeetCode每日一题系列 题目 示例 思路 题解 题目 给你一个坐标 coordinates ...

最新文章

  1. bootstrap 栅栏系统
  2. 【杂谈】2020年如何长期、系统,全面地学习深度学习和计算机视觉,这是有三AI的完整计划...
  3. Linux动态频率调节系统CPUFreq
  4. 【职场】聊聊P5晋升P6之后
  5. VTK:InfoVis之DelimitedTextWriter
  6. PHP版本区别5与7:性能 64位 运算符 输入类型 返回类型 匿名类;7改进1.变量存储空间2.数组结构3.函数调用机制
  7. (2015-12-09)java.util.Arrays的用法
  8. python数据可视化代码_python数据可视化
  9. 形参与实参在函数中的传递
  10. 蔡高厅老师 - 高等数学阅读笔记 - 07 - 函数的微分 - 微分中值定理 罗尔、拉格朗日中值定理 (31、32、33、34、35)
  11. 据说,上次获奖的同学拿了奖金泡了班花还get到了2个offer
  12. 21世纪的文件系统:概述WindowsNT 5.0文件系统(NTFS)(三)
  13. Ubuntu Qt 无法覆盖文件 错误解决方法
  14. Shell cace条件语句
  15. 好心情患者故事:节食暴食反复横跳,我确诊了重度抑郁
  16. 怎样把m4a转换mp3格式?
  17. css(五)项目实战,ps切图
  18. 海思SD3403/SS928开发(三)红外DC接入
  19. 急!!!微信公众号数据迁移后openid无法转换
  20. 2022 前端一场面试及答案整理

热门文章

  1. 均匀分布的期望和方差
  2. imo free video calls and text(IMO免费视频通话)
  3. 三极管单级放大器输入输出阻抗
  4. PS 画笔工具与文字工具
  5. 如何求100万长度的数组的中间值元素,采用定向数组只需6个毫秒的算法
  6. Windows Server2012默认的80端口被System进程占用解决办法
  7. android 横屏字体变小,android屏幕大小,字体大小,横屏竖屏切换问题
  8. 云计算认证系列:CKA认证
  9. M1芯片的Mac在开发iOS项目时遇到的问题汇总(模拟器无法运行,Cocoapods错误等)
  10. java中将汉字转拼音,解决pinyin4j多音节问题