圖論-腐爛的橘子

994.腐爛的橘子


在給定的 m x n 網格 grid 中,每個單元格可以有以下三個值之一:值 0 代表空單元格;
值 1 代表新鮮橘子;
值 2 代表腐爛的橘子。
每分鐘,腐爛的橘子 周圍 4 個方向上相鄰 的新鮮橘子都會腐爛。返回 直到單元格中沒有新鮮橘子為止所必須經過的最小分鐘數。如果不可能,返回 -1

輸入:二維數組
輸出:最短時間
思路:看過題解本題使用BFS,廣度優先算法,首先遍歷數組,找到所有的“2”和“1”,然后統計,將“2”存在隊列中,隊列中的元素是數組,存的是“2”對應坐標,設置變量記錄“1”的數,將所有的“2”存入隊列中然后當做廣度優先遍歷的第0層,然后彈出,并將所能“污染”到的“1”進行“污染”,然后每一個“1”變為“2”,“1”的數量減一,最后判斷是否大于0,大于0則返回最短時間,小于0則返回-1。

class Solution {public int orangesRotting(int[][] grid) {//1的個數int num = 0;//2的坐標Queue<int[]> que = new LinkedList<>();//數組緯度int m = grid.length;int n = grid[0].length;//循環遍歷數組for(int i = 0; i < m; i++){for(int j = 0; j < n; j++){if(grid[i][j] == 2){que.add(new int[]{i , j});}else if(grid[i][j] == 1){num++;}}}//時間int time = 0;while(num > 0 && !que.isEmpty()){time++;//把2的坐標記錄下來//遍歷2int n1 = que.size();for(int i = 0; i < n1; i++){int[] pos = que.poll();int x = pos[0];int y = pos[1];//判斷邊界和1if(x + 1 < m && grid[x + 1][y] == 1){que.add(new int[]{x + 1, y});grid[x + 1][y] = 2;num--;}if(y + 1 < n && grid[x][y + 1] == 1){que.add(new int[]{x, y + 1});grid[x][y + 1] = 2;num--;}if(x - 1 >= 0 && grid[x - 1][y] == 1){que.add(new int[]{x - 1, y});grid[x - 1][y] = 2;num--;}if(y - 1 >= 0 && grid[x][y - 1] == 1){que.add(new int[]{x, y - 1});grid[x][y - 1] = 2;num--;}}}//還有1,返回-1if(num > 0){return -1;}return time;}
}

注意:此處int n1 = que.size(); for(int i = 0; i < n1; i++){...}不能寫成for(int i = 0; i < que.size(); i++)

如果使用 for(int i = 0; i < que.size(); i++),隊列大小在循環過程中可能會動態變化,導致邏輯錯誤。
如果使用 int n1 = que.size(); for(int i = 0; i < n1; i++),隊列大小在循環開始前固定,循環次數不會受到動態變化的影響,邏輯更加穩定。

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

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

相關文章

TypeError: Cannot create property ‘xxx‘ on string ‘xxx‘

&#x1f90d; 前端開發工程師、技術日更博主、已過CET6 &#x1f368; 阿珊和她的貓_CSDN博客專家、23年度博客之星前端領域TOP1 &#x1f560; 牛客高級專題作者、打造專欄《前端面試必備》 、《2024面試高頻手撕題》、《前端求職突破計劃》 &#x1f35a; 藍橋云課簽約作者、…

嵌入式硬件設計SPI時需要注意什么?

嵌入式硬件設計SPI時需要注意什么? 1. 硬件設計注意事項 關鍵點注意事項1. 信號完整性- 縮短SCK、MOSI、MISO的走線長度,避免反射干擾。- 使用屏蔽線或差分信號(高速場景)。- 阻抗匹配(特別是高頻信號,如50Ω端接)。2. 電源與地線- 電源去耦:每個SPI芯片的VCC附近放置0…

git-filter-repo 清除大文件教程

git filter-repo 是一個用于過濾和清理 Git 倉庫歷史的工具&#xff0c;它可以高效地批量修改提交歷史中的文件內容、刪除文件、重命名文件以及進行其他歷史重構操作。相較于 git filter-branch&#xff0c;它通常更快且更易于使用。 以下是一個基本示例&#xff0c;說明如何使…

STM32之軟件SPI

SPI傳輸更快&#xff0c;最大可達80MHz&#xff0c;而I2C最大只有3.4MHz。輸入輸出是分開的&#xff0c;可以同時輸出輸入。是同步全雙工。僅支持一主多從。SS是從機選擇線。每個從機一根。SPI無應答機制的設計。 注意&#xff1a;所有設備需要共地&#xff0c;時鐘線主機輸出&…

Git清理本地殘留的、但已經在服務器上被刪除的分支

要篩選出已經被服務器刪除的本地分支&#xff0c;并在本地刪除這些分支&#xff0c;可以按照以下步驟進行操作&#xff1a; 步驟 1: 獲取遠程分支信息&#xff0c;確保本地的遠程分支信息是最新的&#xff1a; git fetch -p步驟 2: 列出本地分支和遠程分支&#xff1a; git …

DeepSeek 掌舵創意方向+即夢 AI 繪制夢幻藍圖,引領創作潮流

我的個人主頁 我的專欄&#xff1a; 人工智能領域、java-數據結構、Javase、C語言&#xff0c;希望能幫助到大家&#xff01;&#xff01;&#xff01; 點贊&#x1f44d;收藏? 前言 在當今數字化浪潮洶涌澎湃的時代&#xff0c;人工智能已然成為推動各領域變革與創新的核心驅…

elasticsearch商業產品

Elasticsearch商業產品介紹 在當今數字化時代&#xff0c;數據如同石油一樣珍貴。而要從海量的數據中提取有價值的信息&#xff0c;則需要強大的工具。這就是Elasticsearch商業產品的用武之地。Elasticsearch是一款開源的搜索引擎&#xff0c;它能夠快速地存儲、搜索和分析大規…

DeepSeek本地接口調用(Ollama)

前言 上篇博文&#xff0c;我們通過Ollama搭建了本地的DeepSeek模型&#xff0c;本文主要是方便開發人員&#xff0c;如何通過代碼或工具&#xff0c;通過API接口調用本地deepSeek模型 前文&#xff1a;DeepSeek-R1本地搭建_deepseek 本地部署-CSDN博客 注&#xff1a;本文不僅…

Deepin下創建WebStorm快捷方式

個人博客地址&#xff1a;Deepin下創建WebStorm快捷方式 | 一張假鈔的真實世界 下載WebStorm并解壓至安裝目錄&#xff0c;默認的只能通過命令行啟動&#xff0c;每次都需要先打開終端&#xff0c;很不方便。解決方法是創建快捷方式&#xff0c;并駐留任務欄。這樣點擊任務欄上…

物聯網系統搭建

實驗項目名稱 構建物聯網系統 實驗目的 掌握物聯網系統的一般構建方法。 實驗要求&#xff1a; 1&#xff0e;構建物聯網系統&#xff0c;實現前后端的交互。 實驗內容&#xff1a; CS模式MQTT&#xff08;不帶數據分析處理功能&#xff09; 實現智能設備與應用客戶端的交…

從零開始用HTML、CSS和JavaScript制作貪吃蛇網頁小游戲

〇、前言 貪吃蛇是一款經典的休閑游戲&#xff0c;在諾基亞手機時代風靡全球。 作為編程入門者&#xff0c;實現一個貪吃蛇游戲是學習Web前端技術的絕佳練習。 名人說&#xff1a;博觀而約取&#xff0c;厚積而薄發。——蘇軾《稼說送張琥》 創作者&#xff1a;Code_流蘇(CSDN…

LeetCode1328

非常抱歉&#xff0c;我理解錯了你的要求&#xff01;現在我會嚴格按照你的要求重新組織內容&#xff0c;確保在代碼段中不加入注釋&#xff0c;并在代碼逐行講解中加入代碼段。 LeetCode1328 目錄 題目描述示例思路分析代碼段代碼逐行講解復雜度分析總結的知識點整合總結 題…

STM32點亮LED燈

1.1 介紹&#xff1a; LED模塊。它的控制方法非常簡單&#xff0c;要想點亮LED&#xff0c;只要讓它兩端有一定的電壓就可以&#xff1b;實驗中&#xff0c;我們通過編程控制信號端S的高低電平&#xff0c;從而控制LED的亮滅。我們提供一個測試代碼控制LED模塊上實現閃爍的效果…

【華三】STP端口角色與狀態深度解析

STP端口角色與狀態深度解析&#xff1a;構建無環網絡的基石 引言一、STP基礎回顧二、端口角色詳解1. 根端口&#xff08;Root Port&#xff09;2. 指定端口&#xff08;Designated Port&#xff09;3. 非指定端口&#xff08;阻塞端口&#xff09; 三、端口狀態轉換流程四、角色…

計算機畢業設計Python+Django+Vue3微博數據輿情分析平臺 微博用戶畫像系統 微博輿情可視化(源碼+ 文檔+PPT+講解)

溫馨提示&#xff1a;文末有 CSDN 平臺官方提供的學長聯系方式的名片&#xff01; 溫馨提示&#xff1a;文末有 CSDN 平臺官方提供的學長聯系方式的名片&#xff01; 溫馨提示&#xff1a;文末有 CSDN 平臺官方提供的學長聯系方式的名片&#xff01; 作者簡介&#xff1a;Java領…

稚暉君級硬核:智元公司開源機器人通信框架AimRT入駐GitCode平臺

在科技的浪潮中&#xff0c;機器人技術正以前所未有的速度發展。它們不再只是科幻小說中的概念&#xff0c;而是逐漸融入到我們的日常生活中&#xff0c;從工廠的自動化生產線到家庭的智能助手&#xff0c;機器人的身影無處不在。然而&#xff0c;隨著機器人應用的日益復雜&…

[項目]基于FreeRTOS的STM32四軸飛行器: 四.LED控制

基于FreeRTOS的STM32四軸飛行器: 四.LED控制 一.配置Com層二.編寫驅動 一.配置Com層 先在Com_Config.h中定義燈位置的枚舉類型&#xff1a; 之后定義Led的結構體&#xff1a; 定義飛行器狀態&#xff1a; 在Com_Config.c中初始化四個燈&#xff1a; 在Com_Config.h外部聲明…

Ubuntu20.04雙系統安裝及軟件安裝(一):系統安裝

Ubuntu20.04雙系統安裝及軟件安裝&#xff08;一&#xff09;&#xff1a;系統安裝 Ubuntu系統卸載Ubuntu20.04安裝BIOS進入系統安裝 許久沒寫博客了&#xff0c;今天開始重新回歸了。首先記錄我在雙系統上重裝Ubuntu20.04的安裝過程記錄以及個人見解。 Ubuntu系統卸載 參考雙…

cursor+deepseek實現完整的俄羅斯方塊小游戲

<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>俄羅斯方塊</title><style>body {margin: 0;display: flex;justify-content: center;align-items: center;height: 100vh;background: …

人工智能開發面經AI、大數據、算法

以下是一份AI算法開發崗位的面試面經&#xff0c;結合最新行業趨勢和經典問題&#xff0c;涵蓋技術解析與實戰案例&#xff0c;供參考&#xff1a; 一、機器學習基礎&#xff08;占比約30%&#xff09; 1. 過擬合與欠擬合的解決方案 問題&#xff1a;如何解決模型過擬合&…