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.pswp.cn/news/394164.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/394164.shtml
英文地址,請注明出處:http://en.pswp.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…