leetcode1091. 二進制矩陣中的最短路徑(bfs)

在一個 N × N 的方形網格中,每個單元格有兩種狀態:空(0)或者阻塞(1)。一條從左上角到右下角、長度為 k 的暢通路徑,由滿足下述條件的單元格 C_1, C_2, ..., C_k 組成:相鄰單元格 C_i 和 C_{i+1} 在八個方向之一上連通(此時,C_i 和 C_{i+1} 不同且共享邊或角)
C_1 位于 (0, 0)(即,值為 grid[0][0])
C_k 位于 (N-1, N-1)(即,值為 grid[N-1][N-1])
如果 C_i 位于 (r, c),則 grid[r][c] 為空(即,grid[r][c] == 0)
返回這條從左上角到右下角的最短暢通路徑的長度。如果不存在這樣的路徑,返回 -1

代碼

class Solution {public int shortestPathBinaryMatrix(int[][] grid) {if(grid[0][0]==1) return -1;int[][] dir=new int[][]{{-1,0},{1,0},{0,1},{0,-1},{1,1},{1,-1},{-1,1},{-1,-1}};Queue<int[]> queue=new LinkedList<>();int n=grid.length;int level=1;queue.add(new int[]{0,0});boolean[][] check=new boolean[n][n];check[0][0]=true;while (!queue.isEmpty()){int size=queue.size();for(int i=0;i<size;i++){int[] temp=queue.poll();int x=temp[0],y=temp[1];if(x==n-1&&y==n-1) return level;for(int[] d:dir){int nextX=x+d[0],nextY=y+d[1];if(bound(nextX,nextY,n,n)&&grid[nextX][nextY]!=1&&!check[nextX][nextY]){queue.add(new int[]{nextX,nextY});check[nextX][nextY]=true;}}}level++;}return -1;}public boolean bound(int x,int y,int n,int m){return x>=0&&x<n&&y>=0&&y<m;}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/393962.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/393962.shtml
英文地址,請注明出處:http://en.pswp.cn/news/393962.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

lock和synchronized的同步區別與選擇

區別如下&#xff1a; 1. lock是一個接口&#xff0c;而synchronized是java的一個關鍵字&#xff0c;synchronized是內置的語言實現&#xff1b;&#xff08;具體實現上的區別在《Java虛擬機》中有講解底層的CAS不同&#xff0c;以前有讀過現在又遺忘了。&#xff09; 2. syn…

首頁顯示登陸用戶名php,首頁登錄后怎么在首頁顯示用戶名以及隱藏登錄框?

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓index.php&#xff1a;登錄頁面用戶名&#xff1a;密碼&#xff1a;沒有賬號&#xff1f;立即注冊——————————————————————————doaction.php&#xff1a;header("Content-type:text/html;charsetutf…

react中使用構建緩存_通過在React中構建Tic Tac Toe來學習ReasonML

react中使用構建緩存3. 7. 2018: UPDATED to ReasonReact v0.4.23. 7. 2018&#xff1a;更新為ReasonReact v0.4.2 You may have heard of Reason before. It’s a syntax on top of OCaml that compiles to both readable JavaScript code and to native and bytecode as well…

echart vue 圖表大小_vue里echarts自適應窗口大小改變

echarts的圖表提供了一個resize方法可以自適應屏幕窗口改變&#xff0c;而重新渲染圖表大小的功能。因此我們只要監聽瀏覽器的窗口改變的resize事件&#xff0c;再結合echarts的圖表&#xff0c;就可以實現我們想要的功能了。如果是單個圖表的情況的話用window.onresize myCha…

用js檢測文本框中輸入的是否符合條件并有錯誤和正確提醒

<!DOCTYPE html> <html><head><meta charset"utf-8"><title>捕獲異常</title></head><script type"text/javascript">function my_func(){try{xdocument.getElementById("input_id").value;ale…

leetcode784. 字母大小寫全排列(回溯)

給定一個字符串S&#xff0c;通過將字符串S中的每個字母轉變大小寫&#xff0c;我們可以獲得一個新的字符串。返回所有可能得到的字符串集合。 示例: 輸入: S “a1b2” 輸出: [“a1b2”, “a1B2”, “A1b2”, “A1B2”] 輸入: S “3z4” 輸出: [“3z4”, “3Z4”] 輸入: S…

Petapoco使用SQLite的異常問題

在DbProviderFactory 初始化時&#xff0c;報一個"System.Data.SQLite.SQLiteFactory”的類型初始值設定項引發異常。 解決&#xff1a;不光要引用System.Data.SQLite。還要把SQLite.Interop.dll添加到運行目錄下。轉載于:https://www.cnblogs.com/crazy29/p/7595552.html…

CPP函數調用的方法

相比于C語言中函數可以直接調用&#xff0c;CPP的函數由于命名存在隱式添加&#xff0c;因此需要通過一套流程才能調用&#xff1a; 1. 編碼中&#xff0c;使用extern "C" 定義一個C函數&#xff0c;返回獲取對象的指針&#xff1b;執行該函數時&#xff0c;獲得一個…

php 算法 二進制文件,關于PHP二進制流 逐bit的低位在前算法(詳解)_PHP教程

復制代碼 代碼如下:/******************************************************* 逐bit的低位在前算法* param $x* return int*/function reverse($x){$result 0;for($i 0; $i < 8; $i){$result ($result <> $i));}return $result & 0xff;}調用展示&#xff1a;…

頂尖科技棋牌游戲開發_如何接受頂尖科技公司的采訪

頂尖科技棋牌游戲開發If you’ve ever wondered how to land an interview with top tech companies or know someone who’s been struggling to get an interview with one, then this article is for you.如果您曾經想過如何與頂尖高科技公司進行面談&#xff0c;或者想知道…

城軌列控系統

關于列控系統想問的問題 1&#xff09;列控系統的組成&#xff1f; 2&#xff09;城軌列控系統和列控系統有哪些區別&#xff1f; 3&#xff09;列控系統的設備圖片&#xff1f; 4&#xff09;列控系統的作用&#xff1f; 1、地鐵的供電部分&#xff1a; 參考&#xff1a;http:…

Thinkphp 發送郵件

TP框架實現發送郵件&#xff0c;親測可用1.在模塊的配置文件config中加入下里面代碼THINK_EMAIL > array(SMTP_HOST > smtp.qq.com, //SMTP服務器SMTP_PORT > 465, //SMTP服務器端口SMTP_USER > 郵箱qq.com, //SMTP服務器用戶名SMTP_PASS > 密碼, //SMTP服務器密…

leetcode40. 組合總和 II(回溯)

給定一個數組 candidates 和一個目標數 target &#xff0c;找出 candidates 中所有可以使數字和為 target 的組合。 candidates 中的每個數字在每個組合中只能使用一次。 說明&#xff1a; 所有數字&#xff08;包括目標數&#xff09;都是正整數。 解集不能包含重復的組合…

python 面部識別_一文教你在Python中打造你自己專屬的面部識別系統

原標題&#xff1a;一文教你在Python中打造你自己專屬的面部識別系統人臉識別是用戶身份驗證的最新趨勢。蘋果推出的新一代iPhone X使用面部識別技術來驗證用戶身份。百度也在使“刷臉”的方式允許員工進入辦公室。對于很多人來說&#xff0c;這些應用程序有一種魔力。但在這篇…

Computer Vision Review Incompletely

機器視覺牛人及其相關領域分類科普轉載于:https://www.cnblogs.com/casperwin/p/6380484.html

php獲取特殊標簽,thinkphp特殊標簽使用

特殊標簽1、比較標簽eq或者 equal 等于neq 或者notequal 不等于gt 大于egt 大于等于lt 小于elt 小于等于heq 恒等于nheq 不恒等于2.范圍標簽in(in namen value9,10,11,12)在這些數字里面(else/)不在這些數字的范圍內(/in)(notin namen value9,10,11,12)在這些數字里面(else/)不…

leetcode面試題 08.08. 有重復字符串的排列組合(回溯)

有重復字符串的排列組合。編寫一種方法&#xff0c;計算某字符串的所有排列組合。 示例1: 輸入&#xff1a;S “qqe” 輸出&#xff1a;[“eqq”,“qeq”,“qqe”] 示例2: 輸入&#xff1a;S “ab” 輸出&#xff1a;[“ab”, “ba”] 代碼 class Solution {ArrayList&l…

4、Orcal數據庫dmp文件導入

1、CMD命令導入備份數據庫dmp文件&#xff1a; 以上一篇博客提到的gdnh用戶&#xff0c;我們需要在cmd窗口執行如下命令&#xff1a; imp gdnh/admin123orcl fileE:/createTable.dmp fully 截圖說明&#xff1a; 導入成功的標志&#xff1a; 導入完成之后刷新表&#xff1a; 轉…

iOS APP 安全測試

1、ipa包加殼 首先&#xff0c;我們可以通過iTunes 下載 AppStore的ipa文件(蘋果 把開發者上傳的ipa包 進行了加殼再放到AppStore中)&#xff0c;所以我們從AppStore下載的ipa都是加殼的&#xff0c;所以不能直接用來反編譯。 得到ipa文件 可以分析APP 里包含的一些資源&#x…

oracle 與 client端執行結果不一致_Oracle -PLSQLDeveloper 13 數據庫連接

關于oracle 及PLSQLDeveloper 13如何下載&#xff0c;安裝流程不一一贅述&#xff0c;網絡帖子很多&#xff0c;知乎直接搜索亦可。本次主要分享&#xff1a;學習前輩們關于安裝流程中出現設置報錯&#xff0c;應如何處理&#xff08;本人個例&#xff0c;通過網絡找思路&#…