国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【leetcode994】腐爛的橘子(BFS)

這篇具有很好參考價值的文章主要介紹了【leetcode994】腐爛的橘子(BFS)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、題目

【leetcode994】腐爛的橘子(BFS),LeetCode,# BFS和DFS,算法,BFS,leetcode

【leetcode994】腐爛的橘子(BFS),LeetCode,# BFS和DFS,算法,BFS,leetcode文章來源地址http://www.zghlxwxcb.cn/news/detail-826952.html

二、思路

  • 首先將所有爛橘子入隊,然后常規(guī)BFS遍歷,注意while的截止條件除了隊列為空,新鮮橘子數(shù)量大于0(沒新鮮橘子也沒必要繼續(xù)遍歷,保證時間計算的正確性),這兩者一個不滿足就可以停止
  • 每分鐘進行一次【腐爛擴散】,使用BFS對二維圖進行遍歷,注意和二叉樹的層次遍歷不一樣(二叉樹則是只有一個根節(jié)點,這里可能有多個腐爛橘子-根節(jié)點)。
  • auto [x, y] = q.front()是C++17引入的新語法,結(jié)構(gòu)化綁定,可以從數(shù)組、元組或結(jié)構(gòu)體中一次性解包多個值,并將他們綁定到多個變量上,比如這里就是聲明了xy變量,然后將這2個變量綁定到元組中。如果不這么使用,可以直接通過firstsecond訪問pair元素的數(shù)值。
  • auto& dir: directions是C++11的語法,&表示引用,直接auto dir則是按值訪問,前者可以避免不必要的復(fù)制,并且允許你修改容器的容器。

三、代碼

class Solution {
public:
    int orangesRotting(vector<vector<int>>& grid) {
        int m = grid.size();
        int n = grid[0].size();
        //存儲上下左右的坐標方位
        vector<pair<int, int>> directions = {{0,1}, {0,-1}, {1,0},{-1,0}};
        int fresh_num = 0;
        //創(chuàng)建隊列,存儲腐爛的橘子二維坐標位置
        queue<pair<int, int>>q;
        for(int i=0; i < m;i++){
            for(int j=0; j < n; j++){
                if (grid[i][j] == 1)
                    fresh_num += 1;
                //將所有爛橘子入隊列
                if (grid[i][j] == 2)
                    q.push({i, j});
            }
        }
        int minutes = 0;
        //爛橘子隊列中沒有橘子后則停止
        while(!q.empty() && fresh_num > 0){
            int q_num = q.size();
            //所有的爛橘子同時開始干活
            for(int i=0; i< q_num; i++){ 
                //隊首元素
                pair<int, int>one = q.front();
                q.pop(); //出隊
                int x = one.first;
                int y = one.second;
                //遍歷當前位置的上下左右
                for(auto& dir: directions){
                    int nx = x + dir.first;
                    int ny = y + dir.second;
                    if(nx >= 0 && nx < m && ny >= 0 && ny < n && grid[nx][ny] == 1){ //如果是新鮮橘子
                        grid[nx][ny] = 2;
                        q.push({nx, ny});
                        fresh_num -= 1;
                    }
                }
            }
            minutes += 1;
        }
        return fresh_num == 0?minutes:-1;
    }
};

到了這里,關(guān)于【leetcode994】腐爛的橘子(BFS)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • LeetCode_BFS_DFS_中等_1376.通知所有員工所需的時間

    LeetCode_BFS_DFS_中等_1376.通知所有員工所需的時間

    公司里有 n 名員工,每個員工的 ID 都是獨一無二的,編號從 0 到 n - 1。公司的總負責人通過 headID 進行標識。 在 manager 數(shù)組中,每個員工都有一個直屬負責人,其中 manager[i] 是第 i 名員工的直屬負責人。對于總負責人,manager[headID] = -1。題目保證從屬關(guān)系可以用樹結(jié)構(gòu)顯示。

    2024年02月02日
    瀏覽(22)
  • LeetCode 865. Smallest Subtree with all the Deepest Nodes【樹,DFS,BFS,哈希表】1534

    LeetCode 865. Smallest Subtree with all the Deepest Nodes【樹,DFS,BFS,哈希表】1534

    本文屬于「征服LeetCode」系列文章之一,這一系列正式開始于2021/08/12。由于LeetCode上部分題目有鎖,本系列將至少持續(xù)到刷完所有無鎖題之日為止;由于LeetCode還在不斷地創(chuàng)建新題,本系列的終止日期可能是永遠。在這一系列刷題文章中,我不僅會講解多種解題思路及其優(yōu)化,

    2024年02月09日
    瀏覽(24)
  • 算法沉淀——多源 BFS(leetcode真題剖析)

    算法沉淀——多源 BFS(leetcode真題剖析)

    多源 BFS 是指從多個源點同時進行廣度優(yōu)先搜索的算法。在傳統(tǒng)的 BFS 中,我們通常從一個起始點開始,逐層遍歷所有的相鄰節(jié)點。而在多源 BFS 中,我們可以同時從多個源點開始,從這些源點出發(fā),逐層向外擴展,直到達到目標或者遍歷完整個圖。 多源 BFS 可以用于解決一些

    2024年02月19日
    瀏覽(25)
  • 算法沉淀——BFS 解決 FloodFill 算法(leetcode真題剖析)

    算法沉淀——BFS 解決 FloodFill 算法(leetcode真題剖析)

    BFS(廣度優(yōu)先搜索)解決 Flood Fill 算法的基本思想是通過從起始點開始,逐層向外擴展,訪問所有與起始點相連且具有相同特性(顏色等)的區(qū)域。在 Flood Fill 中,通常是通過修改圖像的像素顏色。 下面是 BFS 解決 Flood Fill 算法的步驟: 初始化: 將起始點的顏色修改為新的

    2024年02月20日
    瀏覽(16)
  • 算法沉淀——BFS 解決拓撲排序(leetcode真題剖析)

    算法沉淀——BFS 解決拓撲排序(leetcode真題剖析)

    Breadth-First Search (BFS) 在拓撲排序中的應(yīng)用主要是用來解決有向無環(huán)圖(DAG)的拓撲排序問題。拓撲排序是對有向圖中所有節(jié)點的一種線性排序,使得對于每一條有向邊 (u, v),節(jié)點 u 在排序中都出現(xiàn)在節(jié)點 v 的前面。如果圖中存在環(huán)路,則無法進行拓撲排序。 BFS 解決拓撲排序

    2024年02月21日
    瀏覽(27)
  • 算法沉淀——BFS 解決最短路問題(leetcode真題剖析)

    算法沉淀——BFS 解決最短路問題(leetcode真題剖析)

    BFS (廣度優(yōu)先搜索)是解決最短路徑問題的一種常見算法。在這種情況下,我們通常使用BFS來查找從一個起始點到目標點的最短路徑。 具體步驟如下: 初始化: 從起始點開始,將其放入隊列中,并標記為已訪問。 BFS遍歷: 不斷從隊列中取出頂點,然后探索與該頂點相鄰且

    2024年02月20日
    瀏覽(21)
  • 【LeetCode 算法】Unique Paths III 不同路徑 III 暴力DFS

    在二維網(wǎng)格 grid 上,有 4 種類型的方格: 1 表示起始方格。且只有一個起始方格。 2 表示結(jié)束方格,且只有一個結(jié)束方格。 0 表示我們可以走過的空方格。 -1 表示我們無法跨越的障礙。 返回在四個方向(上、下、左、右)上行走時,從起始方格到結(jié)束方格的不同路徑的數(shù)目

    2024年02月14日
    瀏覽(22)
  • 拓撲排序算法 -- dfs、bfs

    拓撲排序算法 -- dfs、bfs

    210. 課程表 II 該題用到「拓撲排序」的算法思想,關(guān)于拓撲排序,直觀地說就是,讓你把?幅圖「拉平」,?且這個「拉平」的圖??,所有箭頭?向都是?致的,?如上圖所有箭頭都是朝右的。 很顯然,如果?幅有向圖中存在環(huán),是?法進?拓撲排序的,因為肯定做不到所

    2024年02月10日
    瀏覽(19)
  • 算法-圖BFS/DFS-單詞接龍

    算法-圖BFS/DFS-單詞接龍

    https://leetcode-cn.com/problems/number-of-islands 給定兩個單詞(beginWord 和 endWord)和一個字典,找到從 beginWord 到 endWord 的最短轉(zhuǎn)換序列的長度。轉(zhuǎn)換需遵循如下規(guī)則: 每次轉(zhuǎn)換只能改變一個字母。 轉(zhuǎn)換過程中的中間單詞必須是字典中的單詞。 說明: 如果不存在這樣的轉(zhuǎn)換序列,返回

    2024年02月10日
    瀏覽(31)
  • 算法回憶錄——DFS與BFS

    算法回憶錄——DFS與BFS

    拿迷宮(二維,上下左右四個方向,入口在左方)來舉例,一開始從入口出發(fā),一直往右走,如果遇到了路口,就記錄下該路口有幾條路可以走,然后選擇一條走下去,如果走下去又遇到了一個路口,那么又記錄下這個路口有幾條路口可以走,然后返回第一個路口,選擇未走

    2024年01月21日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包