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

算法訓(xùn)練Day39:62.不同路徑 63. 不同路徑 II 動態(tài)規(guī)劃

這篇具有很好參考價值的文章主要介紹了算法訓(xùn)練Day39:62.不同路徑 63. 不同路徑 II 動態(tài)規(guī)劃。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

不同路徑

Category Difficulty Likes Dislikes ContestSlug ProblemIndex Score
algorithms Medium (67.70%) 1746 0 - - 0
Tags

Companies

一個機(jī)器人位于一個 m x n 網(wǎng)格的左上角 (起始點在下圖中標(biāo)記為 “Start” )。

機(jī)器人每次只能向下或者向右移動一步。機(jī)器人試圖達(dá)到網(wǎng)格的右下角(在下圖中標(biāo)記為 “Finish” )。

問總共有多少條不同的路徑?

示例 1:

算法訓(xùn)練Day39:62.不同路徑 63. 不同路徑 II 動態(tài)規(guī)劃

輸入:m = 3, n = 7
輸出:28

示例 2:

輸入:m = 3, n = 2
輸出:3
解釋:
從左上角開始,總共有 3 條路徑可以到達(dá)右下角。
1. 向右 -> 向下 -> 向下
2. 向下 -> 向下 -> 向右
3. 向下 -> 向右 -> 向下

示例 3:

輸入:m = 7, n = 3
輸出:28

示例 4:

輸入:m = 3, n = 3
輸出:6

提示:

  • 1 <= m, n <= 100
  • 題目數(shù)據(jù)保證答案小于等于 2 * 109

Discussion | Solution

題解(動態(tài)規(guī)劃)

class Solution {
public:
    int uniquePaths(int m, int n) {
        vector<vector<int>> dp(m,vector<int>(n,0));
        for(int i = 0; i < m; ++i) dp[i][0] = 1;
        for(int j = 0; j < n; ++j) dp[0][j] = 1;
        for(int i = 1; i < m; ++i) {
            for(int j = 1; j < n; ++j) {
                dp[i][j] = dp[i-1][j] + dp[i][j-1];
            }
        }
        return dp[m-1][n-1];
    }
};
  • 時間復(fù)雜度:O(m × n)
  • 空間復(fù)雜度:O(m × n)

數(shù)論方法

可以轉(zhuǎn)化為,給你m + n - 2個不同的數(shù),隨便取m - 1個數(shù),有幾種取法。

class Solution {
public:
    int uniquePaths(int m, int n) {
        long long numerator = 1; // 分子
        int denominator = m - 1; // 分母
        int count = m - 1;
        int t = m + n - 2;
        while (count--) {
            numerator *= (t--);
            while (denominator != 0 && numerator % denominator == 0) {
                numerator /= denominator;
                denominator--;
            }
        }
        return numerator;
    }
};
  • 時間復(fù)雜度:O(m)
  • 空間復(fù)雜度:O(1)

不同路徑 II

Category Difficulty Likes Dislikes ContestSlug ProblemIndex Score
algorithms Medium (41.00%) 1032 0 - - 0
Tags

數(shù)組?|?動態(tài)規(guī)劃?|?矩陣

Companies

一個機(jī)器人位于一個 m x n 網(wǎng)格的左上角 (起始點在下圖中標(biāo)記為 “Start” )。

機(jī)器人每次只能向下或者向右移動一步。機(jī)器人試圖達(dá)到網(wǎng)格的右下角(在下圖中標(biāo)記為 “Finish”)。

現(xiàn)在考慮網(wǎng)格中有障礙物。那么從左上角到右下角將會有多少條不同的路徑?

網(wǎng)格中的障礙物和空位置分別用 10 來表示。

示例 1:

算法訓(xùn)練Day39:62.不同路徑 63. 不同路徑 II 動態(tài)規(guī)劃

輸入:obstacleGrid = [[0,0,0],[0,1,0],[0,0,0]]
輸出:2
解釋:3x3 網(wǎng)格的正中間有一個障礙物。
從左上角到右下角一共有 2 條不同的路徑:
1. 向右 -> 向右 -> 向下 -> 向下
2. 向下 -> 向下 -> 向右 -> 向右

示例 2:

算法訓(xùn)練Day39:62.不同路徑 63. 不同路徑 II 動態(tài)規(guī)劃

輸入:obstacleGrid = [[0,1],[0,0]]
輸出:1

提示:

  • m == obstacleGrid.length
  • n == obstacleGrid[i].length
  • 1 <= m, n <= 100
  • obstacleGrid[i][j]01

Discussion | Solution

題解

// @lc code=start
class Solution {
public:
    int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
        int m = obstacleGrid.size();
        int n = obstacleGrid[0].size();
    if(obstacleGrid[m-1][n-1] == 1 || obstacleGrid[0][0] == 1) {
        return 0;
    }
    vector<vector<int>> dp(m,vector<int>(n,0));
    for(int i = 0; i < m &&obstacleGrid[i][0] == 0;++i) dp[i][0] = 1;
    for(int j = 0; j < n &&obstacleGrid[0][j] == 0;++j) dp[0][j] = 1;
    for(int i = 1; i < m; ++i) {
        for(int j = 1;j < n;++j) {
            if(obstacleGrid[i][j] == 1) continue;
            dp[i][j] = dp[i-1][j] + dp[i][j-1];
        }
    }
    return dp[m-1][n-1];
    }
};
  • 時間復(fù)雜度:O(n × m),n、m 分別為obstacleGrid 長度和寬度
  • 空間復(fù)雜度:O(n × m)

同樣我們給出空間優(yōu)化版本:文章來源地址http://www.zghlxwxcb.cn/news/detail-425039.html

class Solution {
public:
    int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
        if (obstacleGrid[0][0] == 1)
            return 0;
        vector<int> dp(obstacleGrid[0].size());
        for (int j = 0; j < dp.size(); ++j)
            if (obstacleGrid[0][j] == 1)
                dp[j] = 0;
            else if (j == 0)
                dp[j] = 1;
            else
                dp[j] = dp[j-1];

        for (int i = 1; i < obstacleGrid.size(); ++i)
            for (int j = 0; j < dp.size(); ++j){
                if (obstacleGrid[i][j] == 1)
                    dp[j] = 0;
                else if (j != 0)
                    dp[j] = dp[j] + dp[j-1];
            }
        return dp.back();
    }
};
  • 時間復(fù)雜度:O(n × m),n、m 分別為obstacleGrid 長度和寬度
    ][j] == 1)
    dp[j] = 0;
    else if (j != 0)
    dp[j] = dp[j] + dp[j-1];
    }
    return dp.back();
    }
    };

- 時間復(fù)雜度:O(n × m),n、m 分別為obstacleGrid 長度和寬度
- 空間復(fù)雜度:O(m)

到了這里,關(guān)于算法訓(xùn)練Day39:62.不同路徑 63. 不同路徑 II 動態(tài)規(guī)劃的文章就介紹完了。如果您還想了解更多內(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ìn)行投訴反饋,一經(jīng)查實,立即刪除!

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

相關(guān)文章

  • LeetCode算法題解(動態(tài)規(guī)劃)|LeetCoed62. 不同路徑、LeetCode63. 不同路徑 II

    LeetCode算法題解(動態(tài)規(guī)劃)|LeetCoed62. 不同路徑、LeetCode63. 不同路徑 II

    題目鏈接:62. 不同路徑 題目描述: 一個機(jī)器人位于一個? m x n ? 網(wǎng)格的左上角 (起始點在下圖中標(biāo)記為 “Start” )。 機(jī)器人每次只能向下或者向右移動一步。機(jī)器人試圖達(dá)到網(wǎng)格的右下角(在下圖中標(biāo)記為 “Finish” )。 問總共有多少條不同的路徑? 示例 1: 示例 2:

    2024年02月05日
    瀏覽(33)
  • 我在代碼隨想錄|寫代碼Day33 | 動態(tài)規(guī)劃| 路徑問題| 62.不同路徑,63. 不同路徑 II,343. 整數(shù)拆分

    我在代碼隨想錄|寫代碼Day33 | 動態(tài)規(guī)劃| 路徑問題| 62.不同路徑,63. 不同路徑 II,343. 整數(shù)拆分

    ??博客介紹`: 27dCnc ??系列專欄: 數(shù)據(jù)結(jié)構(gòu)與算法 算法入門 C++項目 ?? 當(dāng)前專欄: 算法入門 專題 : 數(shù)據(jù)結(jié)構(gòu)幫助小白快速入門算法 ???????????????????????? ☆*: .?. o(≧▽≦)o .?.:*☆ ??感謝大家點贊??收藏?評論?? 今日學(xué)習(xí)打卡 代碼隨想錄 - 動態(tài)規(guī)劃

    2024年03月11日
    瀏覽(96)
  • 力扣算法刷題Day39|動態(tài)規(guī)劃:不同路徑 I&II

    力扣題目:#62.不同路徑 刷題時長:參考題解后10min 解題方法:動規(guī) 復(fù)雜度分析 時間O(m*n) 空間O(m*n) 問題總結(jié) 初始化二維數(shù)組的python語法:i 對應(yīng) m,j 對應(yīng)n 二維遍歷順序,從上到下從左到右通過兩層for循環(huán)實現(xiàn),其中startindex應(yīng)為1 本題收獲 動規(guī)思路 確定dp數(shù)組及下標(biāo)的含義

    2024年02月12日
    瀏覽(18)
  • 代碼隨想錄第39天 | 62.不同路徑 、 63. 不同路徑 II

    代碼隨想錄第39天 | 62.不同路徑 、 63. 不同路徑 II

    一、前言 參考文獻(xiàn):代碼隨想錄 今天主要的題目是動態(tài)規(guī)劃的路徑問題,動態(tài)規(guī)劃五要點; 1、確定dp數(shù)組,dp[i]代表什么i代表什么; 2、遞推公式; 3、初始化dp數(shù)組; 4、遍歷順序; 5、打印dp數(shù)組; 二、不同路徑 1、思路: 我感覺動態(tài)規(guī)劃,我聽的很認(rèn)真,然后這個題目,

    2024年04月13日
    瀏覽(57)
  • 代碼隨想錄Day33 LeetCode T62不同路徑 LeetCode T63 不同路徑II

    代碼隨想錄Day33 LeetCode T62不同路徑 LeetCode T63 不同路徑II

    動規(guī)五部曲 1.確定dp數(shù)組含義 2.確定遞推公式 3.初始化數(shù)組 4.確定遍歷方式 5.打印dp數(shù)組查看分析問題 題目鏈接:62. 不同路徑 - 力扣(LeetCode) 注:n行m列而不是m行n列 1.確定dp數(shù)組含義 代表到達(dá)此下標(biāo)有多少條路徑 2.確定遞推公式 因為只能向右或者向下走,所以到達(dá)i,j這個點的

    2024年02月06日
    瀏覽(27)
  • 算法隨想錄第三十九天打卡|62.不同路徑 , 63. 不同路徑 II

    本題大家掌握動態(tài)規(guī)劃的方法就可以。?數(shù)論方法?有點非主流,很難想到。? 代碼隨想錄 視頻講解: 動態(tài)規(guī)劃中如何初始化很重要!| LeetCode:62.不同路徑_嗶哩嗶哩_bilibili 總結(jié) 把m和n弄反了。 https://programmercarl.com/0063.%E4%B8%8D%E5%90%8C%E8%B7%AF%E5%BE%84II.htmlhttps://programmercarl.com/00

    2024年01月20日
    瀏覽(37)
  • 算法day39|動態(tài)規(guī)劃:不同路徑Ⅰ、Ⅱ

    https://leetcode.cn/problems/unique-paths/ 了解下標(biāo)含義——這里是行列數(shù) 理解為什么dfs不能做這道題(超時) https://leetcode.cn/problems/unique-paths-ii/ 初始化時也應(yīng)該注意限制條件 注意特殊情況的判斷

    2024年02月06日
    瀏覽(21)
  • 算法刷刷刷|動態(tài)規(guī)劃篇|509.斐波那契數(shù)| 70.爬樓梯| 746.使用最小花費爬樓梯| 62.不同路徑| 63不同路徑2| 343.正數(shù)拆分 | 96.不同的二叉搜索樹

    509. 斐波那契數(shù) 斐波那契數(shù) (通常用 F(n) 表示)形成的序列稱為 斐波那契數(shù)列 。該數(shù)列由 0 和 1 開始,后面的每一項數(shù)字都是前面兩項數(shù)字的和。也就是: F(0) = 0,F(xiàn)(1) = 1 F(n) = F(n - 1) + F(n - 2),其中 n 1 給定 n ,請計算 F(n) 。 70.爬樓梯 746.使用最小花費爬樓梯 給你一個整數(shù)

    2023年04月23日
    瀏覽(24)
  • 力扣:63. 不同路徑 II(動態(tài)規(guī)劃)

    力扣:63. 不同路徑 II(動態(tài)規(guī)劃)

    一個機(jī)器人位于一個 m x n 網(wǎng)格的左上角 (起始點在下圖中標(biāo)記為 “Start” )。 機(jī)器人每次只能向下或者向右移動一步。機(jī)器人試圖達(dá)到網(wǎng)格的右下角(在下圖中標(biāo)記為 “Finish”)。 現(xiàn)在考慮網(wǎng)格中有障礙物。那么從左上角到右下角將會有多少條不同的路徑? 網(wǎng)格中的障礙

    2024年01月18日
    瀏覽(24)
  • leetcode63. 不同路徑 II(動態(tài)規(guī)劃-java)

    leetcode63. 不同路徑 II(動態(tài)規(guī)劃-java)

    來源:力扣(LeetCode) 鏈接:https://leetcode.cn/problems/unique-paths-ii 一個機(jī)器人位于一個 m x n 網(wǎng)格的左上角 (起始點在下圖中標(biāo)記為 “Start” )。 機(jī)器人每次只能向下或者向右移動一步。機(jī)器人試圖達(dá)到網(wǎng)格的右下角(在下圖中標(biāo)記為 “Finish”)。 現(xiàn)在考慮網(wǎng)格中有障礙物。

    2024年02月11日
    瀏覽(24)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包