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

【LeetCode: 2684. 矩陣中移動的最大次數(shù) + dfs】

這篇具有很好參考價值的文章主要介紹了【LeetCode: 2684. 矩陣中移動的最大次數(shù) + dfs】。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

【LeetCode: 2684. 矩陣中移動的最大次數(shù) + dfs】,LeetCode每日一題打卡,leetcode,矩陣,深度優(yōu)先,算法,java,dfs,bfs

?? 算法題 ??

?? 算法刷題專欄 | 面試必備算法 | 面試高頻算法 ??
?? 越難的東西,越要努力堅持,因為它具有很高的價值,算法就是這樣?
?? 作者簡介:碩風(fēng)和煒,CSDN-Java領(lǐng)域優(yōu)質(zhì)創(chuàng)作者??,保研|國家獎學(xué)金|高中學(xué)習(xí)JAVA|大學(xué)完善JAVA開發(fā)技術(shù)棧|面試刷題|面經(jīng)八股文|經(jīng)驗分享|好用的網(wǎng)站工具分享??????
?? 恭喜你發(fā)現(xiàn)一枚寶藏博主,趕快收入囊中吧??
?? 人生如棋,我愿為卒,行動雖慢,可誰曾見我后退一步?????

?? 算法題 ??

【LeetCode: 2684. 矩陣中移動的最大次數(shù) + dfs】,LeetCode每日一題打卡,leetcode,矩陣,深度優(yōu)先,算法,java,dfs,bfs

【LeetCode: 2684. 矩陣中移動的最大次數(shù) + dfs】,LeetCode每日一題打卡,leetcode,矩陣,深度優(yōu)先,算法,java,dfs,bfs

?? 題目鏈接

  • 2684. 矩陣中移動的最大次數(shù)

? 題目描述

給你一個下標從 0 開始、大小為 m x n 的矩陣 grid ,矩陣由若干 正 整數(shù)組成。

你可以從矩陣第一列中的 任一 單元格出發(fā),按以下方式遍歷 grid :

從單元格 (row, col) 可以移動到 (row - 1, col + 1)、(row, col + 1) 和 (row + 1, col + 1) 三個單元格中任一滿足值 嚴格 大于當(dāng)前單元格的單元格。
返回你在矩陣中能夠 移動 的 最大 次數(shù)。

示例 1:
【LeetCode: 2684. 矩陣中移動的最大次數(shù) + dfs】,LeetCode每日一題打卡,leetcode,矩陣,深度優(yōu)先,算法,java,dfs,bfs

輸入:grid = [[2,4,3,5],[5,4,9,3],[3,4,2,11],[10,9,13,15]]
輸出:3
解釋:可以從單元格 (0, 0) 開始并且按下面的路徑移動:

  • (0, 0) -> (0, 1).
  • (0, 1) -> (1, 2).
  • (1, 2) -> (2, 3).
    可以證明這是能夠移動的最大次數(shù)。
    示例 2:

【LeetCode: 2684. 矩陣中移動的最大次數(shù) + dfs】,LeetCode每日一題打卡,leetcode,矩陣,深度優(yōu)先,算法,java,dfs,bfs

輸入:grid = [[3,2,4],[2,1,9],[1,1,7]]
輸出:0
解釋:從第一列的任一單元格開始都無法移動。

提示:

m == grid.length
n == grid[i].length
2 <= m, n <= 1000
4 <= m * n <= 105
1 <= grid[i][j] <= 106

?? 求解思路&實現(xiàn)代碼&運行結(jié)果


? dfs

?? 求解思路
  1. 該題目可以通過dfs,也可以通過bfs來求解,我們就用dfs來做,感興趣的同學(xué)可以使用bfs。我們從第一列的任一單元格開始,遞歸右上/右側(cè)/右下三個方向,如果走一步后,沒有出界,且格子值大于當(dāng)前的位置,繼續(xù)向前走,繼續(xù)遞歸過程。在遞歸的時候,記錄每次可以走的最大次數(shù),最后更新答案并返回。
  2. 需要注意的是,通過dfs我們會有很多重復(fù)計算的過程,所以,我們需要對其進行一個優(yōu)化的過程,怎么優(yōu)化呢?首先就必須要明白,重復(fù)計算的過程是什么。如果第一行第一列的數(shù)值可以想右側(cè)和右下側(cè)移動,并且,第二行第一列的數(shù)值和第一行第一列的元素相同,那么它會重復(fù)右上和右側(cè)的位置,這個就是重復(fù)計算過程。
  3. 為了避免這個過程,我們可以將每次遞歸走過的位置都標記為0,這樣就可以保證下次再走的時候不會重復(fù)走,避免了重復(fù)計算的過程。
  4. 有了基本的思路,接下來我們就來通過代碼來實現(xiàn)一下。
?? 實現(xiàn)代碼
class Solution {
    public int maxMoves(int[][] grid) {
        int m = grid.length, n = grid[0].length;
        int max = 0;
        for (int i = 0; i < m; i++) {
            max = Math.max(max, dfs(i, 0, m, n, grid));
        }
        return max;
    }

    public int dfs(int i, int j, int m, int n, int[][] grid) {
        int p1 = 0, p2 = 0, p3 = 0;
        if (i >= 1 && i <= m && j < n - 1 && grid[i - 1][j + 1] > grid[i][j]) {
            p1 = dfs(i - 1, j + 1, m, n, grid) + 1;
        }
        if (i <= m - 1 && j < n - 1 && grid[i][j + 1] > grid[i][j]) {
            p2 = dfs(i, j + 1, m, n, grid) + 1;
        }
        if (i < m - 1 && j < n - 1 && grid[i + 1][j + 1] > grid[i][j]) {
            p3 = dfs(i + 1, j + 1, m, n, grid) + 1;
        }
        grid[i][j] = 0;
        return Math.max(p1, Math.max(p2, p3));
    }
}
?? 運行結(jié)果

【LeetCode: 2684. 矩陣中移動的最大次數(shù) + dfs】,LeetCode每日一題打卡,leetcode,矩陣,深度優(yōu)先,算法,java,dfs,bfs


?? 共勉

最后,我想和大家分享一句一直激勵我的座右銘,希望可以與大家共勉!

【LeetCode: 2684. 矩陣中移動的最大次數(shù) + dfs】,LeetCode每日一題打卡,leetcode,矩陣,深度優(yōu)先,算法,java,dfs,bfs

【LeetCode: 2684. 矩陣中移動的最大次數(shù) + dfs】,LeetCode每日一題打卡,leetcode,矩陣,深度優(yōu)先,算法,java,dfs,bfs文章來源地址http://www.zghlxwxcb.cn/news/detail-841588.html

到了這里,關(guān)于【LeetCode: 2684. 矩陣中移動的最大次數(shù) + dfs】的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 算法第三十天-矩陣中移動的最大次數(shù)

    算法第三十天-矩陣中移動的最大次數(shù)

    網(wǎng)格圖 DFS 從第一列的任一單元格 ( i , 0 ) (i,0) ( i , 0 ) 開始遞歸。枚舉往右上/右/右下三個方向走,如果走一步后,沒有出界,且格子值大于 g r i d [ i ] [ j ] grid[i][j] g r i d [ i ] [ j ] ,則可以走,繼續(xù)遞歸。 在遞歸過程中,記錄能訪問到的最大列號,作為答案。 代碼實現(xiàn)時,為

    2024年03月23日
    瀏覽(21)
  • 每日一題——LeetCode1287.有序數(shù)組中出現(xiàn)次數(shù)超過25%的元素

    每日一題——LeetCode1287.有序數(shù)組中出現(xiàn)次數(shù)超過25%的元素

    方法一 一次循環(huán)統(tǒng)計 題目給出的數(shù)據(jù)相同的元素都是相鄰的,那么直接從頭開始遍歷,統(tǒng)計每種元素出現(xiàn)次數(shù),當(dāng)有元素次數(shù)超過arr.length/4即為要求的元素 ? 消耗時間和內(nèi)存情況: 方法二 方法一簡化版 設(shè)步長step=arr.length/4,如果某個元素arr[i],跨越一個步長后arr[i+step],即

    2024年01月22日
    瀏覽(27)
  • 2023-06-17 LeetCode每日一題(分割圓的最少切割次數(shù))

    2023-06-17 LeetCode每日一題(分割圓的最少切割次數(shù))

    點擊跳轉(zhuǎn)到題目位置 圓內(nèi)一個 有效切割 ,符合以下二者之一: 該切割是兩個端點在圓上的線段,且該線段經(jīng)過圓心。 該切割是一端在圓心另一端在圓上的線段。 一些有效和無效的切割如下圖所示。 給你一個整數(shù) n ,請你返回將圓切割成相等的 n 等分的 最少 切割次數(shù)。

    2024年02月09日
    瀏覽(25)
  • 2023-06-14 LeetCode每日一題(二進制字符串前綴一致的次數(shù))

    點擊跳轉(zhuǎn)到題目位置 給你一個長度為 n 、下標從 1 開始的二進制字符串,所有位最開始都是 0 。我們會按步翻轉(zhuǎn)該二進制字符串的所有位(即,將 0 變?yōu)?1)。 給你一個下標從 1 開始的整數(shù)數(shù)組 flips ,其中 flips[i] 表示對應(yīng)下標 i 的位將會在第 i 步翻轉(zhuǎn)。 二進制字符串 前綴

    2024年02月08日
    瀏覽(98)
  • 【LeetCode每日一題合集】2023.8.28-2023.9.3(到家的最少跳躍次數(shù))

    【LeetCode每日一題合集】2023.8.28-2023.9.3(到家的最少跳躍次數(shù))

    https://leetcode.cn/problems/insert-interval/ 提示: 0 = intervals.length = 10^4 intervals[i].length == 2 0 = intervals[i][0] = intervals[i][1] = 10^5 intervals 根據(jù) intervals[i][0] 按 升序 排列 newInterval.length == 2 0 = newInterval[0] = newInterval[1] = 10^5 當(dāng)前區(qū)間與要加入的新區(qū)間之間的關(guān)系只有兩種可能:相交或者不相

    2024年02月09日
    瀏覽(26)
  • 【每日一題】Leetcode - 劍指 Offer 43. 1~n 整數(shù)中 1 出現(xiàn)的次數(shù)

    【每日一題】Leetcode - 劍指 Offer 43. 1~n 整數(shù)中 1 出現(xiàn)的次數(shù)

    Leetcode - 劍指 Offer 43. 1~n 整數(shù)中 1 出現(xiàn)的次數(shù) 分解數(shù)字中的每一位,判斷+記錄 = 結(jié)果 But,超時了,下面是優(yōu)化過程簡介 空間換時間(爆內(nèi)存) :n = 123456,則n{len-1} = 12345,其實走到n這里,說明n{len-1}這個數(shù)字我們一定已經(jīng)知道了它有多少個1了,所以我們只需要記錄保存下

    2024年02月11日
    瀏覽(19)
  • 【LeetCode每日一題】——85.最大矩形

    【LeetCode每日一題】——85.最大矩形

    矩陣 困難 85.最大矩形 給定一個僅包含 0 和 1 、大小為 rows x cols 的二維二進制矩陣,找出只包含 1 的最大矩形,并返回其面積。 示例 1: 輸入:matrix = [[“1”,“0”,“1”,“0”,“0”],[“1”,“0”,“1”,“1”,“1”],[“1”,“1”,“1”,“1”,“1”],[“1”,“0”,“0”,“1”,“

    2024年02月13日
    瀏覽(22)
  • 【LeetCode每日一題】53. 最大子數(shù)組和

    https://leetcode.cn/problems/maximum-subarray/description/ 給你一個整數(shù)數(shù)組 nums ,請你找出一個具有最大和的連續(xù)子數(shù)組(子數(shù)組最少包含一個元素),返回其最大和。 子數(shù)組 是數(shù)組中的一個連續(xù)部分。 先算出數(shù)組的前綴和,然后通過2個for循環(huán)遍歷出所有的連續(xù)子數(shù)組。 尋找一個具有

    2024年02月04日
    瀏覽(25)
  • 每日一題——LeetCode1189.氣球的最大數(shù)量

    每日一題——LeetCode1189.氣球的最大數(shù)量

    方法一 個人方法: 統(tǒng)計text字符串中\(zhòng)\\'b\\\'、\\\'a\\\'、\\\'l\\\'、\\\'o\\\'、\\\'n\\\'?這幾個字符出現(xiàn)的次數(shù) l和n需要兩個才能拼成一個balloon,所以碰到l和o加1,其他字符加2 最后求出出現(xiàn)次數(shù)最少的那個字符再除以2就是能拼湊成的單詞數(shù)量,避免出現(xiàn)小數(shù)要使用向下取整 消耗時間和內(nèi)存情況: 方法

    2024年02月01日
    瀏覽(40)
  • 【每日一題】Leetcode - 283. 移動零

    【每日一題】Leetcode - 283. 移動零

    Leetcode - 283. 移動零 從右向左遍歷,遇到0,就將后面所有元素前移,同時更新長度,使其減1,因為移動n次,倒數(shù)n位就被0占據(jù),后續(xù)操作可忽略 前面的操作,從右向左,每次遇到0移動都要跑半個數(shù)組,慢在整體前移; 換個思路,從左向右,記錄首個0的位置,將后面的第一

    2024年02月11日
    瀏覽(14)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包