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

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

题目:

题解:

class Solution:
    def updateMatrix(self, matrix: List[List[int]]) -> List[List[int]]:
        m, n = len(matrix), len(matrix[0])
        # 初始化动态规划的数组,所有的距离值都设置为一个很大的数
        dist = [[10**9] * n for _ in range(m)]
        # 如果 (i, j) 的元素为 0,那么距离为 0
        for i in range(m):
            for j in range(n):
                if matrix[i][j] == 0:
                    dist[i][j] = 0
        # 只有 水平向左移动 和 竖直向上移动,注意动态规划的计算顺序
        for i in range(m):
            for j in range(n):
                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 i in range(m - 1, -1, -1):
            for j in range(n):
                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 i in range(m):
            for j in range(n - 1, -1, -1):
                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 i in range(m - 1, -1, -1):
            for j in range(n - 1, -1, -1):
                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.kler.cn/a/389020.html

相关文章:

  • PHP多门店医疗服务系统小程序源码
  • C++中的栈(Stack)和堆(Heap)
  • ubuntu中apt-get的默认安装路径。安装、卸载以及查看的方法总结
  • webpack loader全解析,从入门到精通(10)
  • Objection
  • ❤React-JSX语法认识和使用
  • 【Ubuntu20】VSCode Python代码规范工具配置 Pylint + Black + MyPy + isort
  • 微信小程序运营日记(第四天)
  • 16.UE5拉怪机制,怪物攻击玩家,伤害源,修复原视频中的BUG
  • VAE的原理及MNIST数据生成
  • 【计算机网络】基础知识,常识应用知识
  • Webpack知识点—publicPath
  • JVM 进阶:深入理解与高级调优
  • YOLOv6-4.0部分代码阅读笔记-engine.py
  • Skyeye 云智能制造 v3.14.12 发布,ERP + 商城
  • 【AI技术】PaddleSpeech部署方案
  • Python实现SSA智能麻雀搜索算法优化BP神经网络分类模型(优化权重和阈值)项目实战
  • 数据结构之排序补充
  • 12.UE5朝向鼠标攻击,状态机入门
  • fabric操作canvas绘图(1)共32节
  • 计算机毕业设计Python流量检测可视化 DDos攻击流量检测与可视化分析 SDN web渗透测试系统 网络安全 信息安全 大数据毕业设计
  • Mysql COUNT() 函数详解
  • 手动实现promise的all,race,finally方法
  • 深入理解Linux内核中的虚拟文件系统(VFS)
  • Mac中禁用系统更新
  • g++/gcc版本切换