首页 > 编程语言 >代码随想录算法训练营第39天 | 62.不同路径 、63. 不同路径 II

代码随想录算法训练营第39天 | 62.不同路径 、63. 不同路径 II

时间:2024-06-16 22:43:29浏览次数:17  
标签:视频 39 obstacleGrid 路径 随想录 number https com

今天开始逐渐有 dp的感觉了,前 两题 不同路径,可以好好研究一下,适合进阶

详细布置

62.不同路径

本题大家掌握动态规划的方法就可以。 数论方法 有点非主流,很难想到。
https://programmercarl.com/0062.不同路径.html
视频讲解:https://www.bilibili.com/video/BV1ve4y1x7Eu

/**
 * @param {number} m
 * @param {number} n
 * @return {number}
 */
var uniquePaths = function(m, n) {
    const dp = new Array(m).fill(1).map(()=>new Array(n).fill(1));

    // for (let i=0;i<n;i++) {
    //     dp[0][i] = 1;
    // }
    // for (let i=0;i<m;i++) {
    //     dp[i][0] = 1;
    // }
    for (let i=1;i<m;i++) {
        for(let j=1;j<n;j++) {
            dp[i][j] = dp[i-1][j] + dp[i][j-1];
        }
    }

    return dp[m-1][n-1];
};
  1. 不同路径 II

https://programmercarl.com/0063.不同路径II.html
视频讲解:https://www.bilibili.com/video/BV1Ld4y1k7c6

这题要注意初始化的时候,如果障碍物在第一行或第一列,,障碍物后面的值都为0
/**
 * @param {number[][]} obstacleGrid
 * @return {number}
 */
var uniquePathsWithObstacles = function(obstacleGrid) {
    if (obstacleGrid[0][0] === 1) return 0;
    let m = obstacleGrid.length;
    let n = obstacleGrid[0].length;
    const dp = new Array(m).fill(0).map(()=>new Array(n).fill(0));
    for(let i=0;i<m;i++) {
        if (obstacleGrid[i][0]===1) {
            dp[i][0] = 0;
            break;
        } else {
            dp[i][0] = 1;
        }
    }
    for(let i=0;i<n;i++) {
        if (obstacleGrid[0][i]===1) {
            dp[0][i] = 0;
            break;
        } else {
            dp[0][i] = 1;
        }
    }

    for (let i=1;i<m;i++) {
        for(let j =1;j<n;j++) {
            if (obstacleGrid[i][j]===1) {
                dp[i][j] = 0;
            } else {
                dp[i][j] = dp[i-1][j] + dp[i][j-1];
            }
        }
    }

    return dp[m-1][n-1];
};
  1. 整数拆分 (可跳过)
    本题思路并不容易想,一刷建议可以跳过。如果学有余力,可以看视频理解一波。

https://programmercarl.com/0343.整数拆分.html
视频讲解:https://www.bilibili.com/video/BV1Mg411q7YJ

96..不同的二叉搜索树 (可跳过)
本题思路并不容易想,一刷建议可以跳过。 如果学有余力,可以看视频理解一波。

https://programmercarl.com/0096.不同的二叉搜索树.html
视频讲解:https://www.bilibili.com/video/BV1eK411o7QA

标签:视频,39,obstacleGrid,路径,随想录,number,https,com
From: https://www.cnblogs.com/yuanyf6/p/18251425

相关文章

  • 代码随想录算法训练营第36期 last day
    最后一次更新,之后去复习专业课和简历583两个字符串的删除操作自己做出来了:Code:class Solution {public://找到公共子序列的最大长度dp 最小步数=串1.size-dp+串2.size-dp    int minDistance(string word1, string word2) {        vector<vector<int......
  • 求单源最短路径的新方法
    参见:dijkstra算法为什么高效。本来不想谈算法,本来只想了一下dijkstra算法背后的形而上,但还是归纳出一个仅靠一次广度优先遍历就能获得单源最短路径的新算法,框图里是算法流程,流程下是一个例子:它不单单可在广度优先遍历时间复杂度求解最短路径,还能在支付额外的insert......
  • 代码随想录刷题记录(7)| 字符串(344.反转字符串,541. 反转字符串II,卡码网:54.替换数字)
    目录(一)反转字符串1.题目描述2.思路3.解题过程(二)反转字符串Ⅱ1.题目描述2.思路3.解题过程(三)替换数字1.题目描述2.思路3.解题过程(一)反转字符串344.反转字符串-力扣(LeetCode)1.题目描述        编写一个函数,其作用是将输入的字符串反转过......
  • 代码随想录刷题记录(8)| 字符串(151.反转字符串里的单词,卡码网:55.右旋转字符串,28. 找出字
    目录(四)反转字符串里的单词1. 题目描述2.思路3.解题过程(1)使用额外空间存储(2)原地反转 (五)右旋转字符串1.题目描述2.思路3.解题过程 (六)找出字符串中第一个匹配项的下标1.题目描述2.思路3.解题思路(七)重复的子字符串1.题目描述2.思路3.解题过程(八)......
  • 代码随想录算法训练营第六十天 | 647. 回文子串、516.最长回文子序列
    647.回文子串文字讲解:代码随想录视频讲解:动态规划,字符串性质决定了DP数组的定义|LeetCode:647.回文子串_哔哩哔哩_bilibili解题思路1.dp[i][j]     [i,j]子串是否是回文的      是则返回true,不是则返回false2.递推公式if(s[i]==s[j])   ......
  • 代码随想录算法训练营第五十九天 | 115.不同的子序列、583. 两个字符串的删除操作、72
    115.不同的子序列题目链接:代码随想录视频讲解:动态规划之子序列,为了编辑距离做铺垫|LeetCode:115.不同的子序列_哔哩哔哩_bilibili解题思路1.dp[i][j]  为在s的前i个元素(即s[0,i-1])(以i-1结尾)中,有多少个t[0,j-1]匹配(以t[j -1]为结尾)2.递推公式//如果......
  • 代码随想录算法训练营第五十八天 | 392.判断子序列
    392.判断子序列 题目链接:代码随想录视频讲解:动态规划,用相似思路解决复杂问题|LeetCode:392.判断子序列_哔哩哔哩_bilibili解题思路本题和求最长公共子序列是一样的,值就是s字符串的长度,如果一致就返回true,如果不一致就是false这题也可以看作编辑距离入门级别的题目......
  • 代码随想录算法训练营第六十二天 | 739.每日温度、496.下一个更大元素 I、503.下一个
    739.每日温度文字讲解:代码随想录视频讲解:单调栈,你该了解的,这里都讲了!LeetCode:739.每日温度_哔哩哔哩_bilibili解题思路思路一:暴力双循环O(n^2)思路二:单调栈(用来找到右边或者左边第一个比它大的元素)元素:利用一个栈来存下标i,用T[i]来做映射顺序(递增还是递减):如果是递增是......
  • 华为OD刷题C卷 - 每日刷题31(园区参观路径,围棋的气)
    1、(园区参观路径):这段代码是解决“园区参观路径”的问题。它提供了一个Java类Main,其中包含main方法和getResult方法,以及一个未使用的dfs方法,用于计算从园区起点到终点的不同参观路径数量。main方法首先读取园区的长和宽,然后读取园区的布局信息,其中0表示可以参观,1表示不能参......
  • 最短路径问题——Floyd算法,dijkstra算法
    7-16最短路径算法(Floyd-Warshall)在带权有向图G中,求G中的任意一对顶点间的最短路径问题,也是十分常见的一种问题。解决这个问题的一个方法是执行n次迪杰斯特拉算法,这样就可以求出每一对顶点间的最短路径,执行的时间复杂度为O(n3)。而另一种算法是由弗洛伊德提出的,时间复杂度......