leetcode542. 01 矩阵(bfs/dp)

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

示例 1:
输入:

0 0 0
0 1 0
0 0 0
输出:

0 0 0
0 1 0
0 0 0

bfs代码

class Solution {int[][] res;public int[][] updateMatrix(int[][] matrix) {int[][] dir=new int[][]{{-1,0},{1,0},{0,1},{0,-1}};res=new int[matrix.length][matrix[0].length];LinkedList<int[]> queue=new LinkedList<>();for(int i=0;i<matrix.length;i++)for(int j=0;j<matrix[0].length;j++)if(matrix[i][j]==0)//将0元素入队{res[i][j]=0;matrix[i][j]=-1;queue.add(new int[]{i,j});}while (!queue.isEmpty()){int[] p=queue.removeFirst();int x=p[0],y=p[1];for(int[] d:dir)//4个方向入队{int nextX=x+d[0],nextY=y+d[1];if(nextX<0||nextY<0||nextX>=matrix.length||nextY>=matrix[0].length||matrix[nextX][nextY]==-1)//不符合的情况剔除continue;res[nextX][nextY]=res[x][y]+1;matrix[nextX][nextY]=-1;queue.add(new int[]{nextX,nextY});}}return res;}
}

动态规划代码

class Solution {public int[][] updateMatrix(int[][] matrix) {int n=matrix.length,m=matrix[0].length;int[][] dp=new int[n][m];for(int i=0;i<n;i++)for(int j=0;j<m;j++)dp[i][j]=matrix[i][j]==0?0:100001;for(int i=0;i<n;i++)for(int j=0;j<m;j++)//从左和上推导{                if(i-1>=0)dp[i][j]= Math.min(dp[i][j],dp[i-1][j]+1);if(j-1>=0)dp[i][j]= Math.min(dp[i][j],dp[i][j-1]+1);}for(int i=n-1;i>=0;i--)for(int j=m-1;j>=0;j--)//从右和下推导{          if(i+1<n)dp[i][j]= Math.min(dp[i][j],dp[i+1][j]+1);if(j+1<m)dp[i][j]= Math.min(dp[i][j],dp[i][j+1]+1);}       return dp;}
}

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

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

相关文章

react本地储存_如何使用React和本地存储构建freeCodeCamp的配方框

react本地储存by Edward Njoroge爱德华尼约格(Edward Njoroge) 如何使用React和本地存储构建freeCodeCamp的配方框 (How to build freeCodeCamp’s recipe box using React and local storage) I completed my first edition of the Free Code Camp recipe box project on May…

调用接口返回500_公交卡余额查询接口开放使用啦!

API说明本API返回数据仅支持JSON格式且会对中文进 行unicode 编码&#xff0c;JSON格式返回数据基本格式如下&#xff1a;{"errCode": 0,"errMsg": "OK","data": {}}其中 errCode 表示请求状态&#xff0c;0表示请求成功&#xff0c; …

stark组件开发之组合搜索基本显示

数据的获取&#xff0c;上一篇&#xff0c;已经有了&#xff01;然后就是&#xff0c;如何进行展示的问题。到了展示这里&#xff0c;又有了新的问题&#xff0c; 因为从数据库&#xff0c;取得的数据。 分为 queryset 和 tuple 两种数据结构。tuple 中&#xff0c;只是字符串。…

美国安全厂商在云安全上的最新进展

本文讲的是美国安全厂商在云安全上的最新进展&#xff0c;【IT168 资讯】优利系统公司日前推出了一系列云产品和服务&#xff0c;并且着重强调企业创建私有云&#xff0c;公有云或混合云工具的安全。  Unisys Secure Cloud是优利系统公司推出的一种管理云服务&#xff0c;承诺…

hessianphp java_hessian 在PHP中的使用

一、hessian是什么&#xff1f;看到这个单词我还不知道怎么读&#xff0c;音标是[hes]读黑森。Hessian是一个轻量级的远程的数据交换工具&#xff0c;使用简单的方法提供了RMI(远程方法调用)的功能. 相比WebService&#xff0c;Hessian更简单、快捷。采用的是二进制RPC协议&…

leetcode1025. 除数博弈(dp/数学)

爱丽丝和鲍勃一起玩游戏&#xff0c;他们轮流行动。爱丽丝先手开局。 最初&#xff0c;黑板上有一个数字 N 。在每个玩家的回合&#xff0c;玩家需要执行以下操作&#xff1a; 选出任一 x&#xff0c;满足 0 < x < N 且 N % x 0 。 用 N - x 替换黑板上的数字 N 。 如…

100万用户服务器_我的应用在一个月内如何增长超过100万用户

100万用户服务器by Assaf Elovic通过阿萨夫埃洛维奇 我的应用在一个月内如何增长超过100万用户 (How my app grew by over 1M users in one month) 只需要这种简单的每周方法和耐心。 (All it took was this simple weekly approach and patience.) Building and promoting a …

原生支付url参数错误_小程序支付

下载微信JSAPI支付的 SDK : https://pay.weixin.qq.com/wiki/doc/api/download/WxpayAPI_php.zip &#xff1b;解压后放在extend 文件夹下&#xff0c;命名为wepay下载你的商户证书&#xff0c;放在extend/wepay/cert/ 文件夹下面。自行将 extend/wepay/example/WxPay.Config.p…

Android清理设备内存具体完整演示样例(二)

版权声明&#xff1a; https://blog.csdn.net/lfdfhl/article/details/27672913 MainActivity例如以下: package cc.c;import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.util.List; import android.app.Activity; import a…

java图片合成视频_使用JAVACV把图片合成视频

使用JAVACV1.2把图片合成视频&#xff0c;直接上代码。自己mark一下&#xff0c;也希望能够帮助更多的人。package test;import static org.bytedeco.javacpp.opencv_imgcodecs.cvLoadImage;import java.io.File;import org.bytedeco.javacpp.avcodec;import org.bytedeco.java…

NPOI导出Excel

首先在官网去下载NPOI&#xff0c;把dll引用到项目中&#xff0c;然后获取列表调用下面的方法就可以导出 后台代码&#xff1a; /// <summary> /// NPOI导出Excel /// </summary> /// <param name"dt"></param> /// <param name"fil…

leetcode1028. 从先序遍历还原二叉树(dfs/栈)

我们从二叉树的根节点 root 开始进行深度优先搜索。 在遍历中的每个节点处&#xff0c;我们输出 D 条短划线&#xff08;其中 D 是该节点的深度&#xff09;&#xff0c;然后输出该节点的值。&#xff08;如果节点的深度为 D&#xff0c;则其直接子节点的深度为 D 1。根节点的…

react jest测试_如何使用Jest和react-testing-library测试Socket.io-client应用程序

react jest测试by Justice Mba由Mba法官 如何使用Jest和react-testing-library测试Socket.io-client应用程序 (How to test a Socket.io-client app using Jest and the react-testing-library) Testing the quality of real-time Socket.io-client integration seems to have…

统计学会用到python吗_统计学学的统计软件深吗(例如Python)普通一本统计学大一不知道该干什么?...

统计学的话&#xff0c;不考虑把基础课和专业课好好学一学嘛&#xff5e; 大一的话数分高代几何已经占了很长时间啦&#xff0c;多刷刷题&#xff0c;把绩点和排名搞得高一点是重中之重嘛&#xff5e;再说学习语言的事儿&#xff5e; 要说日常使用&#xff0c;那还是更推荐pyth…

枚举转中文,通过反射方法与描述的方式获取

示例&#xff1a; 有人为了显示中文&#xff0c;这样定义枚举吗&#xff1f; publicenum TimeOfDay { 上午, 下午, 晚上 }; 这样定义&#xff0c;很别扭&#xff0c;特别是在使用的时候&#xff0c; 比如&#xff0c;this.Time TimeOfDay.上午; 而…

Java语言最新实用案例教程_Java 语言实用案例教程

基本信息书名:Java 语言实用案例教程出版价格&#xff1a;48元作者:常玉慧, 王秀梅出版社&#xff1a;科学出版社出版日期&#xff1a;2016-10-1ISBN&#xff1a;9787030497383字数&#xff1a;387000页码&#xff1a;235版次&#xff1a;版装帧&#xff1a;平装开本&#xff1…

(转)Java随机数

1 随机数的三种产生方式 本章先讲解Java随机数的几种产生方式&#xff0c;然后通过示例对其进行演示。 广义上讲&#xff0c;Java中的随机数的有三种产生方式&#xff1a; (01). 通过System.currentTimeMillis()来获取一个当前时间毫秒数的long型数字。(02). 通过Math.random()…

leetcode105. 从前序与中序遍历序列构造二叉树(递归)

根据一棵树的前序遍历与中序遍历构造二叉树。注意: 你可以假设树中没有重复的元素。例如&#xff0c;给出前序遍历 preorder [3,9,20,15,7] 中序遍历 inorder [9,3,15,20,7] 返回如下的二叉树&#xff1a;3/ \9 20/ \15 7代码 /*** Definition for a binary tree node.*…

途虎养车三个创始人_3个来自非常规创始人的获奖技术和产品见解

途虎养车三个创始人by Henry通过亨利 3个来自非常规创始人的获奖技术和产品见解 (3 Winning Technology & Product Insights from WeChat’s unconventional founder) Intro: The writer is a current PMLinkedIn. Formerly he worked as a growth engineer Facebook. he …

Powershell-创建Module

1.找到默认module路径&#xff0c;ISE启动时自动加载默认领下的Module代码。 $env:PSModulePath 2.在其中一个默认路径下创建个文件夹&#xff0c;在文件夹下创建一个.psm1后缀文件&#xff0c;注意文件夹名字与文件名一样。 3.在.psm1文件中写入函数代码。 4.重启ISE自动加载m…