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

C++ | Leetcode C++题解之第542题01矩阵

题目:

题解:

class Solution {
public:vector<vector<int>> updateMatrix(vector<vector<int>>& matrix) {int m = matrix.size(), n = matrix[0].size();// 初始化动态规划的数组,所有的距离值都设置为一个很大的数vector<vector<int>> dist(m, vector<int>(n, INT_MAX / 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] = min(dist[i][j], dist[i - 1][j] + 1);}if (j - 1 >= 0) {dist[i][j] = 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] = min(dist[i][j], dist[i + 1][j] + 1);}if (j - 1 >= 0) {dist[i][j] = 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] = min(dist[i][j], dist[i - 1][j] + 1);}if (j + 1 < n) {dist[i][j] = 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] = min(dist[i][j], dist[i + 1][j] + 1);}if (j + 1 < n) {dist[i][j] = min(dist[i][j], dist[i][j + 1] + 1);}}}return dist;}
};
http://www.lryc.cn/news/482057.html

相关文章:

  • RabbitMQ 不公平分发介绍
  • 测试实项中的偶必现难测bug--一键登录失败
  • 危!这些高危端口再不知道问题就大了
  • Redis集群模式之Redis Sentinel vs. Redis Cluster
  • Leetcode 罗马数字转整数
  • 东方通TongWeb替换Tomcat的踩坑记录
  • ceph介绍和搭建
  • 树莓派安装FreeSWITCH
  • OpenSSL 生成根证书、中间证书和网站证书
  • MySQL核心业务大表归档过程
  • dapp获取钱包地址,及签名
  • 探索Dijkstra算法的普遍最优性:从经典算法到最新学术突破
  • ‍️代码的华尔兹:在 Makefile 的指尖上舞动自动化的诗篇
  • 函数式编程Stream流(通俗易懂!!!)
  • 数据分析:转录组差异fgsea富集分析
  • 在Django中安装、配置、使用CKEditor5,并将CKEditor5录入的文章展现出来,实现一个简单博客网站的功能
  • AI笔筒操作说明及应用场景
  • Android自启动管控
  • 把握鸿蒙生态崛起的机遇:开发者视角的探讨
  • MySQL初学之旅(1)配置与基础操作
  • 一款革命性的视频剪辑工具,AI剪辑新纪元:Clapper
  • HTML 区块
  • 复杂度的讲解
  • [ Linux 命令基础 2 ] Linux 命令详解-系统管理命令
  • 使用docker部署Prometheus和Grafana去监控mysql和redis
  • 日志管理 | Log360 实现PCI DSS v4.0数据安全合规要求
  • JAVA中的string和stringbuffer
  • 轻型民用无人驾驶航空器安全操控------理论考试多旋翼部分笔记
  • 计算用户订购率梧桐数据库和oracle数据库sql分析
  • 通过DNS服务器架构解释DNS请求过程