leecode熱題100---994:腐爛的橘子

題目
在給定的 m x n 網格 grid 中,每個單元格可以有以下三個值之一:

值 0 代表空單元格;
值 1 代表新鮮橘子;
值 2 代表腐爛的橘子。
每分鐘,腐爛的橘子 周圍 4 個方向上相鄰 的新鮮橘子都會腐爛。

返回 直到單元格中沒有新鮮橘子為止所必須經過的最小分鐘數。如果不可能,返回 -1 。
在這里插入圖片描述
C++:

//一般當一個對象有多個屬性的時候,我們會用結構體stuct寫多個屬性,而當只有兩個屬性的時候,就可以使用pair.
//pair<int, int> P;        //對象P有兩個屬性,都是int類型// 思路:bfs 廣度優先搜索 首先將爛橘子坐標全放到隊列中去。進而廣度優先搜索,進行判定。可以看代碼注釋。class Solution
{
public:int badorange(vector<vector<int>>& gride){// bfs 廣度優先,將腐爛橘子的坐標放到隊列中int m = gride.size();int n = gride[0].size();queue<pair<int, int>>q; // 存放腐爛橘子的坐標bool flag = false;      // 記錄是否有好橘子,若無則直接返回0int goodnums = 0;for (int i = 0; i < m; i++){for (int j = 0; j < n; j++){if (gride[i][j] == 2){q.push({ i, j });}else if (gride[i][j] == 1){flag = true;goodnums++;      // 好橘子的數量}}}if (!flag)  return 0;int time = 0;while (!q.empty()){int qLen = q.size();flag = false;   // 記錄本回合是否有好橘子變爛,若無則可直接返回,時間不進行+1for (int i = 0; i < qLen; i++){[x, y] = q.front();q.pop();// 判斷腐爛橘子的上下左右是否有新鮮橘子if (x > 0 && gride[x - 1][y] == 1){flag = true;gride[x - 1][y] = 2;	// 新鮮橘子變爛goodnums--;				// 新鮮橘子-1q.push({ x - 1, y });	// 新的爛橘子坐標}if (x < m - 1 && gride[x + 1][y] == 1){flag = true;gride[x + 1][y] = 2;goodnums--;q.push({ x + 1, y });}if (y > 0 && gride[x][y - 1] == 1){flage = true;gride[x][y - 1] = 2;goodnums--;q.push({ x, y - 1 });}if (y < n - 1 && gride[x][y - 1] == 1){flage = true;gride[x][y - 1] = 2;goodnums--;q.push({ x, y - 1 });}}if (flag = true){time++;}elsebreak;	// 本回合無新鮮橘子變爛,直接返回}if (goodnums == 0){return time;}elsereturn -1;}
};

python:

思路

# 1、先遍歷一次數組獲取腐爛橘子的位置,以及新鮮橘子的位置分別存在mold和fresh中
# 2、此時若沒有mold且沒有fresh則證明為空,返回0;若僅沒有mold則證明永遠不會腐爛,返回-1
# 3、接著遍歷mold中的所有坐標,check他們的上下左右,如果在fresh中則該坐標需要從fresh中取出,并且加入mold。
# 4、一輪遍歷完成讓count++,如果mold此時為空則可以停止,mold中仍有坐標則循環3中的遍歷
# 5、返回時檢查fresh,如果fresh為空則說明所有橘子已經腐爛,返回count值即可,仍有fresh說明永遠有橘子無法腐爛class Solution:def orangesRotting(self, grid):maxi = len(grid)maxj = len(grid[0])count = -1mold = []tmp = []fresh = set()# 遍歷grid獲取新鮮橘子坐標fresh,腐爛坐標moldfor i in range(maxi):for j in range(maxj):if grid[i][j] == 1:fresh.add((i,j))elif grid[i][j] == 2:mold.append([i,j])# 此時若沒有mold且沒有fresh則證明為空,返回0;若僅沒有mold則證明永遠不會腐爛,返回-1if not mold and not fresh: return 0if not mold: return -1# 腐爛橘子的函數def check(i, j):if (i,j) in fresh:fresh.remove((i,j))tmp.append((i,j))# 每輪循環檢查mold中坐標的上下左右是否可以腐爛while mold != []:for x in mold:check(x[0]-1,x[1])check(x[0]+1,x[1])check(x[0],x[1]-1)check(x[0],x[1]+1)mold = tmptmp = []count += 1# 如果fresh為空則說明所有橘子已經腐爛,返回count值即可,仍有fresh說明永遠有橘子無法腐爛if len(fresh) == 0:return countelse: return -1

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

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

相關文章

C++之第九課

課程列表 今天&#xff0c;我們要學習一種結構&#xff1a;循環結構。 循環的方法有3種。 今天先將第1種for學了&#xff1a; int a;//循環變量 int b; for(a1;a<10;a){//像if那樣“打包”cout<<a<<" ";b; } 當然&#xff0c;也可以這樣寫&#…

【MySQL精通之路】InnoDB(5)-內存結構

總目錄&#xff1a; 【MySQL精通之路】InnoDB存儲引擎-CSDN博客 上一篇&#xff1a; 【MySQL精通之路】InnoDB(4)-架構圖-CSDN博客 目錄 ?編輯 1 緩存池&#xff08;Buffer Pool&#xff09; 1.1 緩存池LRU算法 1.2 緩存區配置 1.3 使用InnoDB標準監視器監視緩存池 …

SSRF服務端請求偽造漏洞原理與修復及靶場實踐

SSRF服務端請求偽造漏洞原理與修復及靶場實踐 SSRF漏洞原理與檢測 SSRF&#xff08;Server-Side Request Forgery&#xff0c;服務器端請求偽造&#xff09;漏洞是一種因為服務端提供了遠程訪問服務&#xff0c;而并未對請求目標進行限制或限制不嚴格而引起的安全漏洞&#x…

Java Apache Jexl規則引擎初體驗

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄 前言一、模板引擎的選擇&#xff1f;二、什么是JEXL規則引擎&#xff1f;優點缺點 三、其他規則引擎四、示例1.引入依賴2.方法示例3、代碼解釋4、效果![import java…

VMware虛擬機Ubuntu 22.04.4 LTS系統 NAT網絡設置異常解決

現象&#xff1a; 近日&#xff0c;一直工作正常的虛擬機莫名出現網絡無法連接的情況。 參考網上的各種教程&#xff0c;終于解決問題。 如遇到類似情況的&#xff0c;可以嘗試這個方式&#xff0c;看能否解決問題。 網絡連接&#xff1a;采用NAT模式 異常&#xff1a;網絡圖標…

C++數據結構——哈希表

前言&#xff1a;本篇文章將繼續進行C數據結構的講解——哈希表。 目錄 一.哈希表概念 二.哈希函數 1.除留取余法 三.哈希沖突 1.閉散列 線性探測 &#xff08;1&#xff09;插入 &#xff08;2&#xff09;刪除 2. 開散列 開散列概念 四.閉散列哈希表 1.基本框架 …

場內期權怎么開戶?傭金手續費最低是多少?

今天期權懂帶你了解場內期權怎么開戶&#xff1f;傭金手續費最低是多少&#xff1f;我國的首個場內期權是50ETF期權&#xff0c;隨著投資者對期權產品日漸熟悉&#xff0c;投資者參與數量與交易量穩步增長。 場內期權怎么開戶&#xff1f; 滿足資金要求&#xff1a;根據監管要…

自動打卡腳本

奕輔導自動打卡腳本 打卡腳本&#xff0c;使用前需手動打卡一次并需要抓包&#xff0c;在其中找到相關的token。 # -*- encoding:utf-8 -*-import requests import jsonpunch_in_data {"questionnairePublishEntityId": "1001640744275339000980000000001&qu…

MyBatis:Parameter Maps collection does not contain value for 報錯解決收錄

MyBatis&#xff1a;Parameter Maps collection does not contain value for 報錯問題解決收錄 1.報錯收錄 后端測試時偶然遇到的用mybatis生成好的mapper文件&#xff0c;報Result Maps collection does not contain value…的錯誤 2.報錯分析 java.lang.ILledalAraumentEx…

必應bing國內廣告開戶首充和開戶費是多少?

微軟必應Bing作為國內領先的搜索引擎之一&#xff0c;其廣告平臺憑借其精準的投放、高效的數據分析和廣泛的用戶覆蓋&#xff0c;已成為眾多企業的首選。 根據最新政策&#xff0c;2024年必應Bing國內廣告開戶預充值金額設定為1萬元人民幣起。這一調整旨在確保廣告主在賬戶初始…

【嵌入式DIY實例】-OLED顯示DHT22傳感器數據

OLED顯示DHT22傳感器數據 1、應用實例介紹 本次實例將演示如何在OLED中顯示DHT22溫度濕度傳感器的數據。實例主要分兩步來完成: DHT22傳感器驅動,采集溫度和濕度OLED驅動,顯示采集到的溫度值和濕度值。在前面的文章中,對OLED的應用和驅動做了介紹,請參考: ESP8266-Ardu…

1.Nginx上配置 HTTPS

1.安裝 Nginx&#xff1a; 如果還沒有安裝 Nginx&#xff0c;可以使用包管理工具安裝。例如&#xff0c;在 Ubuntu 上&#xff1a; sudo apt update sudo apt install nginx2.上傳證書和私鑰文件&#xff1a; 將你的證書文件和私鑰文件上傳到服務器上的某個目錄&#xff0c;…

VBA宏指令寫的方法突然不能用了

背景:項目組有個自動化測試項目,實在excel中利用VBA開發的;時間比較久遠,我前面的哥們走后,這個軟件一直在用,最近系統不知道是不是更新的緣故;有些代碼除了問題; 先上源碼: Dim Conn As Object, Rst As Object Dim sqlStr$ Dim str_start_SN$, str2$ str_start_SN …

python 線性回歸模型

教材鏈接-3.2. 線性回歸的從零開始實現 c實現 該博客僅用于記錄一下自己的代碼&#xff0c;可與c實現作為對照 from d2l import torch as d2l import torch import random # nn是神經網絡的縮寫 from torch import nn from torch.utils import data# 加載訓練數據 # 加載訓…

什么是網關,網關有哪些作用?

網關(Gateway)是在計算機網絡中用于連接兩個獨立的網絡的設備&#xff0c;它能夠在兩個不同協議的網絡之間傳遞數據。在互聯網中&#xff0c;網關是一個可以連接不同協議的網絡的設備&#xff0c;比如說可以連接局域網和互聯網&#xff0c;它可以把局域網 的內部網絡地址轉換成…

論文閱讀--GLIP

把detection和phrase ground(對于給定的sentence&#xff0c;要定位其中提到的全部物體)這兩個任務合起來變成統一框架&#xff0c;從而擴展數據來源&#xff0c;因為文本圖像對的數據還是很好收集的 目標檢測的loss是分類loss定位loss&#xff0c;它與phrase ground的定位los…

爬蟲學習--11.MySQL數據庫的基本操作(上)

MySQL數據庫的基本操作 創建數據庫 我們可以在登陸 MySQL 服務后&#xff0c;使用命令創建數據庫&#xff0c;語法如下: CREATE DATABASE 數據庫名; 顯示所有的數據庫 show databases; 刪除數據庫 使用普通用戶登陸 MySQL 服務器&#xff0c;你可能需要特定的權限來創建或者刪…

Docker部署Minio小記

概述 因為工作需要搭建對象存儲的測試環境&#xff0c;故而使用Docker部署Minio&#xff0c;測試通過博文記錄用以備忘 步驟 拉取鏡像 docker pull minio/minio啟動容器 docker run -p 9000:9000 -p 9090:9090 \--name minio \-d --restartalways \-e "MINIO_ACCESS_K…

內臟油脂是什么?如何減掉?

真想減的人&#xff0c;減胖是很容易的&#xff0c;但想要形體美又健康&#xff0c;還是得從減內臟油脂開始&#xff0c;那么&#xff0c;問題來了&#xff0c;什么是內臟油脂&#xff1f; 油脂它分部于身體的各個角落&#xff0c;四肢、腹部、腰、臀部、臉、脖子...等&#xf…

VUE3+TS+elementplus創建table,純前端的table

一、前言 開始學習前端&#xff0c;直接從VUE3開始&#xff0c;從簡單的創建表格開始。因為自己不是專業的程序員&#xff0c;編程主要是為了輔助自己的工作&#xff0c;提高工作效率&#xff0c;VUE的基礎知識并不牢固&#xff0c;主要是為了快速上手&#xff0c;能夠做出一些…