leetcode 542. 01 矩阵

给定一个由 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]]

提示:
m == mat.length
n == mat[i].length
1 <= m, n <= 104
1 <= m * n <= 104
mat[i][j] is either 0 or 1.
mat 中至少有一个 0

思路:
可以采用广度遍历的方式来做,先把所有为 0 的元素进队列,然后依次计算出其临近的元素的距离,依次直到把矩阵中所有的元素的距离都计算完。

class Solution:def __init__(self):self.INT_MAX = 100000def updateMatrix(self, mat: List[List[int]]) -> List[List[int]]:rows, cols = len(mat), len(mat[0])res = [[self.INT_MAX for j in range(cols)] for i in range(rows)]visited = [[0 for j in range(cols)] for i in range(rows)]ss = []for i in range(rows):for j in range(cols):if mat[i][j] == 0:res[i][j] = 0visited[i][j] = 1ss.append((i, j))while len(ss) > 0:r, c = ss.pop(0)if r>0 and visited[r-1][c] == 0:ss.append((r-1, c))visited[r-1][c] = 1res[r-1][c] = min(res[r-1][c], res[r][c]+1)if r+1<rows and visited[r+1][c] == 0:ss.append((r+1, c))visited[r+1][c] = 1res[r+1][c] = min(res[r+1][c], res[r][c]+1)if c>0 and visited[r][c-1] == 0:ss.append((r, c-1))visited[r][c-1] = 1res[r][c-1] = min(res[r][c-1], res[r][c]+1)if c+1<cols and visited[r][c+1] == 0:ss.append((r, c+1))visited[r][c+1] = 1res[r][c+1] = min(res[r][c+1], res[r][c]+1)return res

方法二,采用动态规划来做
在这里插入图片描述

class Solution:def __init__(self):self.INT_MAX = 100000def updateMatrix(self, mat: List[List[int]]) -> List[List[int]]:rows, cols = len(mat), len(mat[0])res = [[self.INT_MAX for j in range(cols)] for i in range(rows)]visited = [[0 for j in range(cols)] for i in range(rows)]ss = []for i in range(rows):for j in range(cols):if mat[i][j] == 0:res[i][j] = 0### from 左上for i in range(rows):for j in range(cols):if i-1>=0:res[i][j] = min(res[i-1][j]+1, res[i][j])if j-1>=0:res[i][j] = min(res[i][j-1]+1, res[i][j])### from 右上for i in range(rows):for j in range(cols-1, -1, -1):if i-1>=0:res[i][j] = min(res[i-1][j]+1, res[i][j])if j+1<cols:res[i][j] = min(res[i][j+1]+1, res[i][j])## from 左下for i in range(rows-1, -1, -1):for j in range(cols):if i+1<rows:res[i][j] = min(res[i+1][j]+1, res[i][j])if j-1>=0:res[i][j] = min(res[i][j-1]+1, res[i][j]) ## from 右下for i in range(rows-1, -1, -1):for j in range(cols-1, -1, -1):if i+1<rows:res[i][j] = min(res[i+1][j]+1, res[i][j])if j+1<cols:res[i][j] = min(res[i][j+1]+1, res[i][j])return res

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/5940.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker安装yapi

一&#xff1a;创建docker-compose.yml 创建docker-compose.yml文件&#xff0c;具体内容如下&#xff1a; version: 3services:yapi-web:image: jayfong/yapi #拉取镜像container_name: yapi-web #容器名称ports: - 3000:3000 #端口映射environment:- YAPI_ADMIN_ACCOUN…

解锁新技能《logback packagingData属性配置作用及源码分析》

开源SDK: <dependency><groupId>io.github.mingyang66</groupId><artifactId>oceansky-logger</artifactId><version>4.3.6</version> </dependency> <!-- 基于logback的日志组件SDK --> <dependency><grou…

Hadoop——Hadoop单机搭建问题汇总

1、org.apache.hadoop.security.AccessControlException: Permission denied: userroot... 解决方法&#xff1a;关闭Hadoop,在hdfs-site.xml文件中添加&#xff1a; <property><name>dfs.permissions</name><value>false</value> </proper…

【Unity2D】设置一物体默认在其他物体之上不被遮挡

比如我想让机器人显示在箱子的前面。 点击箱子&#xff0c;将其层级设置在机器人的后面。 即修改箱子的Order in Layer 在机器人之后 物体默认的Order in Layer 都是0 &#xff0c;将箱子的Order in Layer修改为-1即可 这样将确保先绘制机器人&#xff0c;然后绘制箱子。这样…

C#鼠标拖拽,移动图片实例

最近工作需要做一个鼠标可以拖拽移动图片的功能。 写了几个基本功能&#xff0c;勉强能用。这里记录一下。欢迎大神补充。 这个就是完成的功能。 下边的绿色是一个pictureBox&#xff0c;白色框也是一个pictureBox&#xff0c;他们二者是子父级关系。 绿色是父级&#xff0c…

【图论】最短路算法

1、Dijkstra算法 不能处理边权为负的情况&#xff0c;复杂度O(nlogn) 步骤与基本思路 &#xff08;1&#xff09;初始化距离数组dist[N]&#xff0c;将其所有值赋为0x3f&#xff0c;并将起点1的dist初始化为0&#xff0c;存入优先队列heap中 &#xff08;2&#xff09;从所…

shell编程之正则表达式

正则表达式&#xff1a;由一类特殊的字符以及文本字符所编写的一种模式&#xff0c;处理文本当中的内容 其中的一些字符不表示字符的字面含义&#xff0c;表示控制或者通配的功能 通配符&#xff1a;匹配文件名和目录名&#xff0c;不能匹配文件的内容 正则表达式&#xff1a;可…

STM32 BOOTLOADER配置以及APP跳转实现(裸机)

配置实现环境:KEIL 一、STM32BootLoader配置 Bootloader: Bootloader是硬件启动的引导程序,是运行操作系统的前提。在操作系统内核或用户应用程序运行之前运行的一段小代码。对硬件进行相应的初始化和设定,最终为操作系统准备好环境。 APP:APP就是我们的应用程序,经过硬件…

NAS私有云存储 - 搭建Nextcloud私有云盘并公网远程访问

文章目录 摘要视频教程1. 环境搭建2. 测试局域网访问3. 内网穿透3.1 ubuntu本地安装cpolar3.2 创建隧道3.3 测试公网访问 4 配置固定http公网地址4.1 保留一个二级子域名4.1 配置固定二级子域名4.3 测试访问公网固定二级子域名 摘要 Nextcloud,它是ownCloud的一个分支,是一个文…

Centos Certbot 使用

安装 可选配置&#xff1a;启动EPEL存储库 非必要项 yum install -y epel-release yum clean all yum makecache #启用可选通道 可以不配置 yum -y install yum-utils yum-config-manager --enable rhui-REGION-rhel-server-extras rhui-REGION-rhel-server-optional必要配置…

【《Spring Boot微服务实战(第2版)》——一本关于如何在Spring Boot中构建微服务的全面指南】

使用Spring Boot框架构建基于Java的微服务架构&#xff0c;将应用程序从小型单体架构蜕变为由多个服务组成的事件驱动架构。这个最新版本围绕服务发现、负载均衡、路由、集中式日志、按环境配置和容器化等知识点&#xff0c;循序渐进地讲述微服务架构、测试驱动的开发和分布式系…

Mysql 主从复制、读写分离

目录 一、前言&#xff1a; 二、主从复制原理 2.1 MySQL的复制类型 2.2 MySQL主从复制的工作过程; 2.2.1 MySQL主从复制延迟 2.3 MySQL 有几种同步方式&#xff1a; 三种 2.3.1、异步复制&#xff08;Async Replication&#xff09; 2.3.2、同步复制&#xff08;Sync Re…

centos逻辑分区磁盘扩展

最近碰到服务器磁盘空间不足&#xff0c;需要扩展逻辑分区的需求&#xff0c;特地做下小笔记&#xff0c;方便后续自己回忆。下图是磁盘的相关概念示意图&#xff1a; 1、查看磁盘空间 [rootlocalhost ~]# df -h #查看磁盘空间&#xff0c;根分区的大小是18G&#xff0c;已经用…

力扣 -- 918. 环形子数组的最大和

一、题目&#xff1a; 题目链接&#xff1a;918. 环形子数组的最大和 - 力扣&#xff08;LeetCode&#xff09; 二、解题步骤&#xff1a; 下面是用动态规划的思想解决这道题的过程&#xff0c;相信各位小伙伴都能看懂并且掌握这道经典的动规题目滴。 三、参考代码&#xff1…

PCL点云处理之最小二乘直线拟合(2D| 方法2)(❤亲测可用❤)(二百零一)

PCL点云处理之最小二乘直线拟合(2D| 方法2)(❤亲测可用❤)(二百零一) 一、算法简介二、算法实现1.代码2.结果一、算法简介 在二百章中,我们介绍了一种最小二乘拟合直线点云(2D)的方法,可以获取直线方程系数k,b,这里介绍另一种拟合直线点云的方法,更为简单方便,结果…

AutoSAR系列讲解(实践篇)7.5-OS原理进阶

在AutoSAR系列讲解(入门篇)4.8-BSW的OS功能_autosar os_ManGo CHEN的博客-CSDN博客的时候,就稍微讲了一下OS,当时还挖了坑,说详细的内容放在实践篇中来讲,那么博主准备在这里将这个坑填上。如果对OS有点生疏了, 可以回头再看看AutoSAR系列讲解(入门篇)4.8-BSW的OS功能…

MGRE之OSPF实验

目录 题目&#xff1a; 步骤二&#xff1a;拓扑设计与地址规划​编辑 步骤三&#xff1a;IP地址配置 步骤四&#xff1a;缺省路由配置 步骤五&#xff1a;NAT的配置 步骤六&#xff1a;MGRE配置 中心站点R1配置 分支站点配置 中心站点R5 R1配置 分支站点配置 检测&…

Linux 搜索文件中find和grep命令的区别

在使用linux时&#xff0c;经常需要进行文件查找。其中查找的命令主要有find和grep。两个命令是有区的。 (1)find命令是根据文件的属性进行查找&#xff0c;如文件名&#xff0c;文件大小&#xff0c;所有者&#xff0c;所属组&#xff0c;是否为空&#xff0c;访问时间&#x…

S32K1xx SDK(版本:S32_SDK_S32K1xx_RTM_4.0.3 )详细介绍

前言 在学习一款MCU之前&#xff0c;一般我的习惯是先下载官方提供的SDK包进行学习。然后学习了解SDK提供的资源、框架、以及各目录结构文件作用等&#xff0c;下面边学边做笔记记录。 S32K1系列SDK我们可以到下面的NXP官网去获取&#xff1a; https://www.nxp.com.cn/design…

微服务如何治理

微服务远程调用可能有如下问题&#xff1a; 注册中心宕机&#xff1b; 服务提供者B有节点宕机&#xff1b; 服务消费者A和注册中心之间的网络不通&#xff1b; 服务提供者B和注册中心之间的网络不通&#xff1b; 服务消费者A和服务提供者B之间的网络不通&#xff1b; 服务提供者…