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

力扣每日一題2023.7.13

這篇具有很好參考價值的文章主要介紹了力扣每日一題2023.7.13。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

題目:

力扣每日一題2023.7.13,力扣每日一題,leetcode,算法,職場和發(fā)展

示例:

力扣每日一題2023.7.13,力扣每日一題,leetcode,算法,職場和發(fā)展

力扣每日一題2023.7.13,力扣每日一題,leetcode,算法,職場和發(fā)展

分析:

給我們一個矩陣,我們需要找出一條路徑從矩陣第一層(索引為0)到達矩陣最后一層,并且使得路徑上的數(shù)值之和最小.

如果是老手,那么應(yīng)該一眼就能看出來可以使用動態(tài)規(guī)劃,如果看不出來,那我們接下來一起分析分析.

首先我們先不要搞這么復(fù)雜,以示例1為例,我們就假設(shè)矩陣只有兩層,先忽略掉第三層(最后一層):

力扣每日一題2023.7.13,力扣每日一題,leetcode,算法,職場和發(fā)展

那么我們從第一層到達最后一層(第二層)的最短路徑和是多少呢.

如果我到達的是第二層的6,那么我是可以從第一層的2和1兩個地方到達,所以我們?nèi)绻竭_的地方是6,則最短路徑和是1+6=7.

如果我到達的是第二層的5,那么可以從第一層的2和1和3一共三個地方到達,即到達第二層的5的最短路徑和為1+5=6.同理,到達第二層的4的最短路徑和為1+4=5.

所以如果是上述兩層的矩陣,我們得到的最短路徑和是5(從第一層到達最后一層的4).

我們現(xiàn)在再把第三層加入進來,是這樣的:

力扣每日一題2023.7.13,力扣每日一題,leetcode,算法,職場和發(fā)展

?和我們剛才只有兩層的矩陣相比,僅僅是多了一層,我們?nèi)匀豢梢蕴子脛偛诺挠嬎愎?現(xiàn)在我們把剛剛推導(dǎo)出來的到達第二層的最短路徑和覆蓋掉原始的數(shù)值,是這樣的:力扣每日一題2023.7.13,力扣每日一題,leetcode,算法,職場和發(fā)展

?我們可以接著利用推導(dǎo)過的第二層來接著推導(dǎo)第三層,最后是這樣的:

?力扣每日一題2023.7.13,力扣每日一題,leetcode,算法,職場和發(fā)展

所以我們遍歷最后推斷完畢的最后一層可以得出示例1的最小路徑和是13.

這類可以將大問題拆分成多個有關(guān)聯(lián)性的小問題的題目,我們都可以使用動態(tài)規(guī)劃.并且動態(tài)規(guī)劃大多離不開貪心思想.

根據(jù)以上思路我們不難寫出代碼,但是有一點需要注意一下,就是在遍歷矩陣每層的首位元素的時候要注意不能下標越界,具體可以參考下面的代碼.

完整代碼+結(jié)果如下:

class Solution {
public:
    int minFallingPathSum(vector<vector<int>>& matrix) {
        int n=matrix.size();
        if(n==1) return matrix[0][0];
        for(int i=1;i<n;i++){
            //矩陣每行的開頭單獨拎出來,因為 0-1 會下標越界
            matrix[i][0]+=min(matrix[i-1][0],matrix[i-1][1]);
            for(int j=1;j<n-1;j++){
                //找出上一層的最多相隔一列的最小路徑和,再與本層元素相加,得到本層的最小路徑和
                matrix[i][j]+=min(min(matrix[i-1][j-1],matrix[i-1][j]),matrix[i-1][j+1]);
            }
            //矩陣每行的結(jié)尾也單獨拎出來,因為 n+1 會下標越界
            matrix[i][n-1]+=min(matrix[i-1][n-1],matrix[i-1][n-2]);
        }
        int res=matrix[n-1][0];
        //遍歷最后一層得出最小路徑和
        for(int i=1;i<n;i++){
            res=min(res,matrix[n-1][i]);
        }
        return res;
    }
};

力扣每日一題2023.7.13,力扣每日一題,leetcode,算法,職場和發(fā)展文章來源地址http://www.zghlxwxcb.cn/news/detail-557525.html

到了這里,關(guān)于力扣每日一題2023.7.13的文章就介紹完了。如果您還想了解更多內(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每日一題:931. 下降路徑最小和(2023.7.13 C++)

    Leetcode每日一題:931. 下降路徑最小和(2023.7.13 C++)

    目錄 931.?下降路徑最小和 題目描述: 實現(xiàn)代碼與解析: 動態(tài)規(guī)劃 原理思路: ????????給你一個? n x n ?的 ?方形? 整數(shù)數(shù)組? matrix ?,請你找出并返回通過? matrix ?的 下降路徑 ? 的 ? 最小和 ?。 下降路徑 ?可以從第一行中的任何元素開始,并從每一行中選擇一個元素

    2024年02月16日
    瀏覽(20)
  • 2023-09-07力扣每日一題

    鏈接: [2594. 修車的最少時間](https://leetcode.cn/problems/form-smallest-number-from-two-digit-arrays/) 題意: 一個能力R的人R*N*N分鐘修N輛車,求最快多久修完(多人多車) 解: 二分很好想,主要是怎么檢查(數(shù)學(xué)廢物潤去看題解了) 實際代碼: 限制: 1 = ranks.length = 105 1 = ranks[i] = 100 1 = ca

    2024年02月09日
    瀏覽(22)
  • 2023-07-27力扣每日一題

    鏈接: 2500. 刪除每行中的最大值 題意: 簡單題,每次刪除每一行的最大值,存儲每次刪除中最大的數(shù)字 解: 對行排序,每一列取最大值 實際代碼: 限制: m == grid.length n == grid[i].length 1 = m, n = 50 1 = grid[i][j] = 100

    2024年02月15日
    瀏覽(27)
  • 2023-07-14力扣每日一題

    鏈接: 979. 在二叉樹中分配硬幣 題意: 一個二叉樹,n個節(jié)點,節(jié)點 權(quán)值總和 為n, 每次 可以 相鄰節(jié)點 間移動 1 權(quán)值 求讓每個節(jié)點都為1的最少次數(shù) 解: 給定了一個樹的結(jié)構(gòu)體,先整一手DFS/BFS,n不大,隨便莽莽 首先每個節(jié)點只需要剩下1,而且可以知道 葉子節(jié)點 如果不

    2024年02月16日
    瀏覽(19)
  • 2023-08-23力扣每日一題

    鏈接: 1782. 統(tǒng)計點對的數(shù)目 題意: 給n個點和m條無向邊(可重復(fù)),q個查詢 定義 edge[a] 為一個點是a的邊數(shù)量,定義 ret[a,b] 是 edge[a]+edge[b]-(a與b的邊) q個查詢q個答案,第i次查詢值 val[i] ,求所有的 1=ab=n 條件下有多少 ret[a,b]val[i] 解: TLE卡47了 看了評論區(qū)用空間換時間,

    2024年02月10日
    瀏覽(22)
  • 2023-07-16力扣每日一題

    鏈接: 834. 樹中距離之和 題意: 給定一個樹,有n個節(jié)點,需要得到每個節(jié)點與其他節(jié)點的距離和 解: 還以為是弗洛伊德,一看范圍3E4直接暈倒 想了四個小時,實在是想不出來了,看了一下評論里的轉(zhuǎn)移公式 設(shè) DP[i] 為節(jié)點 i 與其他節(jié)點的距離和, DP[F] 是節(jié)點 i 的父節(jié)點與

    2024年02月16日
    瀏覽(28)
  • 2023-08-25力扣每日一題

    鏈接: 1448. 統(tǒng)計二叉樹中好節(jié)點的數(shù)目 題意: 判斷根節(jié)點到每個節(jié)點X的過程中,如果沒有值大于X,則該節(jié)點為好節(jié)點,求好節(jié)點數(shù)量 解: 由于求根節(jié)點到其他節(jié)點的路徑,則使用dfs算法,更新路徑中的最大值即可 實際代碼: 限制: 二叉樹中節(jié)點數(shù)目范圍是 [1, 10^5] 。

    2024年02月10日
    瀏覽(25)
  • 2023-08-18力扣每日一題

    鏈接: 1388. 3n 塊披薩 題意: 一個長度3n的環(huán),選n次數(shù)字,每次選完以后相鄰的數(shù)字會消失,求選取結(jié)果最大值 解: 這波是~~(ctrl)CV工程師了~~ 核心思想是選取 n個不相鄰 的元素一定 合法 ,我推不出來,猜一猜倒是可以O(shè).o DP[i][j] 表示從 [0,i] 中選取 j 個數(shù)字的最大值 初始

    2024年02月12日
    瀏覽(19)
  • 2023-08-24力扣每日一題

    鏈接: 1267. 統(tǒng)計參與通信的服務(wù)器 題意: 同行同列可以發(fā)生通信,求能發(fā)生通信的機器數(shù)量 解: 標記每行/每列的機器個數(shù)即可 實際代碼: 限制: m == grid.length n == grid[i].length 1 = m = 250 1 = n = 250 grid[i][j] == 0 or 1

    2024年02月11日
    瀏覽(23)
  • 2023-08-22力扣每日一題

    鏈接: 849. 到最近的人的最大距離 題意: 找一個離人最遠的位置 解: 每個位置都用左邊的人和右邊的人更新一遍距離即可 實際代碼: 限制: 2 = seats.length = 2 * 104 seats[i] 為 0 或 1 至少有一個 空座位 至少有一個 座位上有人

    2024年02月11日
    瀏覽(18)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包