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

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

题目:

题解:

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];for (int i = 0; i < m; ++i) {Arrays.fill(dist[i], Integer.MAX_VALUE / 2);}// 如果 (i, j) 的元素为 0,那么距离为 0for (int i = 0; i < m; ++i) {for (int j = 0; j < n; ++j) {if (matrix[i][j] == 0) {dist[i][j] = 0;}}}// 只有 水平向左移动 和 竖直向上移动,注意动态规划的计算顺序for (int i = 0; i < m; ++i) {for (int j = 0; j < n; ++j) {if (i - 1 >= 0) {dist[i][j] = Math.min(dist[i][j], dist[i - 1][j] + 1);}if (j - 1 >= 0) {dist[i][j] = Math.min(dist[i][j], dist[i][j - 1] + 1);}}}// 只有 水平向左移动 和 竖直向下移动,注意动态规划的计算顺序for (int i = m - 1; i >= 0; --i) {for (int j = 0; j < n; ++j) {if (i + 1 < m) {dist[i][j] = Math.min(dist[i][j], dist[i + 1][j] + 1);}if (j - 1 >= 0) {dist[i][j] = Math.min(dist[i][j], dist[i][j - 1] + 1);}}}// 只有 水平向右移动 和 竖直向上移动,注意动态规划的计算顺序for (int i = 0; i < m; ++i) {for (int j = n - 1; j >= 0; --j) {if (i - 1 >= 0) {dist[i][j] = Math.min(dist[i][j], dist[i - 1][j] + 1);}if (j + 1 < n) {dist[i][j] = Math.min(dist[i][j], dist[i][j + 1] + 1);}}}// 只有 水平向右移动 和 竖直向下移动,注意动态规划的计算顺序for (int i = m - 1; i >= 0; --i) {for (int j = n - 1; j >= 0; --j) {if (i + 1 < m) {dist[i][j] = Math.min(dist[i][j], dist[i + 1][j] + 1);}if (j + 1 < n) {dist[i][j] = Math.min(dist[i][j], dist[i][j + 1] + 1);}}}return dist;}
}
http://www.lryc.cn/news/478469.html

相关文章:

  • docker安装低版本的jenkins-2.346.3,在线安装对应版本插件失败的解决方法
  • CSS3新增渐变(线性渐变、径向渐变、重复渐变)
  • 汽车免拆诊断案例 | 2017款凯迪拉克XT5车组合仪表上的指针均失灵
  • Cloudera Hue深度解析:安装、配置到高级用法
  • 17、论文阅读:VMamba:视觉状态空间模型
  • GPT-5 一年后发布?对此你有何期待?
  • 2024中国国际数字经济博览会:图为科技携明星产品引领数智化潮流
  • 大模型面试题:常见的微调方法有哪些说下原理并对比
  • CentOS 9 Stream 上安装 PostgreSQL 16
  • 【数据分享】1901-2023年我国省市县镇四级的逐年最高气温数据(免费获取/Shp/Excel格式)
  • 使用C++和QT开发应用程序入门以及开发实例分享
  • Openlayers高级交互(20/20):超级数据聚合,页面不再混乱
  • qt QStandardItemModel详解
  • 光伏设计软件如何快速上手?
  • Mac下安装Apache JMeter并启动
  • L6.【LeetCode笔记】合并两个有序链表
  • 讲解Golang选择语句
  • 练习LabVIEW第四十一题
  • 应对AI与机器学习的安全与授权管理新挑战,CodeMeter不断创新引领保护方案
  • 【2024最新版Kotlin教程】Kotlin第一行代码系列第五课-类继承,抽象类,接口
  • 虚拟现实和增强现实技术,如何打造沉浸式体验?
  • ChatGPT任务设计和微调策略的优化
  • 通过 SSH 连接远程 Ubuntu 服务器
  • Perl 环境安装
  • 【NOIP提高组】引水入城
  • openvino python推理demo
  • JavaWeb项目-----博客系统
  • GY-56 (VL53L0X) 激光测距
  • 当今陪玩系统小程序趋势,陪玩系统源码搭建后的适用于哪些平台
  • qt QListWidget详解