首页 > 编程语言 >day39 动态规划part2 代码随想录算法训练营 63. 不同路径 II

day39 动态规划part2 代码随想录算法训练营 63. 不同路径 II

时间:2024-02-22 13:35:32浏览次数:32  
标签:障碍物 obstacleGrid day39 E5% 随想录 II range dp

题目:63. 不同路径 II

我的感悟:

  • 题目不难,就是不知道哪个煞笔,把路拦截死了,并且入口就放石头,我真是吐了。

理解难点:

  • 初始值的遇到障碍要Break
  • 其他我写的没错
  • 边界考虑:还有入口和出口有障碍物的话,要直接返回0.

听课笔记:

  • 差不多,
  • 考虑的点就是:
    • 初始值后面为break
    • 开头和结尾有障碍物的时候,直接return 0 
    • 其他一样

代码示例:

class Solution:
    def uniquePathsWithObstacles(self, obstacleGrid: List[List[int]]) -> int:        
        m = len(obstacleGrid)   # 外层 深度
        n = len(obstacleGrid[0])    # 内层 长度
        if obstacleGrid[m - 1][n - 1] == 1 or obstacleGrid[0][0] == 1:
            return 0
        dp = [[0]*n for _ in range(m)]    
        for i in range(m):  # 外层
            if obstacleGrid[i][0] ==1:
                break    # 说明有障碍物了
            # 只有没有障碍物就设置为1
            dp[i][0] = 1
        for i in  range(n): # 内层
            if obstacleGrid[0][i]==1:
                break
            dp[0][i] = 1
        
        for i in range(1,m):
            for j in range(1,n):
                if obstacleGrid[i][j] ==1:  # 如果这里有障碍物就跳过
                    # dp[i][j] = 0 这里写不写懂都可以
                    continue
                dp[i][j] = dp[i-1][j] + dp[i][j-1]
        
        return dp[m-1][n-1]

通过的截图:

未通过截图:

扩展写法:

资料:

  1. 不同路径 II 

https://programmercarl.com/0063.%E4%B8%8D%E5%90%8C%E8%B7%AF%E5%BE%84II.htmlhttps://programmercarl.com/0063.%E4%B8%8D%E5%90%8C%E8%B7%AF%E5%BE%84II.html

视频讲解:https://www.bilibili.com/video/BV1Ld4y1k7c6

标签:障碍物,obstacleGrid,day39,E5%,随想录,II,range,dp
From: https://www.cnblogs.com/liqi175/p/18027118

相关文章

  • 代码随想录算法训练营第二十五天 | 17.电话号码的字母组合 , 216.组合总和III
    216.组合总和III 已解答中等 相关标签相关企业 找出所有相加之和为 n 的 k 个数的组合,且满足下列条件:只使用数字1到9每个数字 最多使用一次返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次,组合可以以任何顺序返回......
  • 代码随想录算法训练营day 1 | 704 二分查找 27 删除元素
    704二分查找数组基础数组空间地址连续、随机访问时间复杂度O(1)、删除和移动时间复杂度O(n)vector和array区别:vector底层实现为array;array是栈上开辟空间、vector是堆上开辟空间;array不支持迭代器访问,支持指针和索引、vector还支持迭代器访问二分查找适用场景有序数组、数组......
  • 代码随想录 day57 最长公共子序列 不相交的线 最大子数组和
    最长公共子序列dp[i][j]:长度为[0,i-1]的字符串text1与长度为[0,j-1]的字符串text2的最长公共子序列为dp[i][j]主要就是两大情况:text1[i-1]与text2[j-1]相同,text1[i-1]与text2[j-1]不相同如果text1[i-1]与text2[j-1]相同,那么找到了一个公共元素,所以dp......
  • day38 动态规划part1 代码随想录算法训练营 746. 使用最小花费爬楼梯
    题目:746.使用最小花费爬楼梯我的感悟:哈哈,我居然自己独立写出来了,确实,只要定义定清楚了,哪怕定的含义只有自己能看懂,只要定义一致就可以求出解决来!!!我真是个大天才!!理解难点:听课笔记:代码示例:classSolution:defminCostClimbingStairs(self,cost:List[int])->int:......
  • # 代码随想录算法训练营day01 | leetcode 704. 二分查找、35.搜索插入位置、34.在排序
    题目链接:704.二分查找-简单题目描述:给定一个n个元素有序的(升序)整型数组nums和一个目标值target,写一个函数搜索nums中的target,如果目标值存在返回下标,否则返回-1。示例1:输入:nums=[-1,0,3,5,9,12],target=9输出:4解释:9出现在nums中并且下标为4示......
  • 力扣 dfs之 437. 路径总和 III
    给定一个二叉树的根节点root ,和一个整数targetSum,求该二叉树里节点值之和等于targetSum的路径的数目。路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。 示例1:输入:root=[10,5,-3,3,2,null,11,3,-2,null,1],target......
  • 同一台Windows中使用IIS配置了多个SSL,须勾选「需要服务器名称指示」
    如果在同一台Windows中使用IIS配置了多个SSL,须勾选「需要服务器名称指示」,如下图。否则将会导致SSL错乱,具体表现是「手动配置一个SSL,会覆盖多个站点」。参考资料:https://www.51-n.com/t-4687-1-1.html至少一个其他网站正在使用同一HTTPS绑定,而此绑定用另一个证书配置。确......
  • day38 动态规划part1 代码随想录算法训练营 70. 爬楼梯
    题目:70.爬楼梯我的感悟:居然自己先写出来了!!继续努力!!理解难点:听课笔记:我的代码:classSolution:defclimbStairs(self,n:int)->int:ifn==1:return1dp=[0]*(n+1)dp[1]=1dp[2]=2foriinran......
  • 代码随想录算法训练营第二十四天 | 77. 组合
    组合已解答中等相关标签相关企业给定两个整数n和k,返回范围[1,n]中所有可能的k个数的组合。你可以按任何顺序返回答案。示例1:输入:n=4,k=2输出:[[2,4],[3,4],[2,3],[1,2],[1,3],[1,4],]示例2:输入:n=1,k=1输出:[[1]]提示:1<=n<=201<......
  • Bubbliiiing版本yolov7 c++opencv dnn部署
    使用B导的yolov7代码部署,代码地址:https://github.com/bubbliiiing/yolov7-pytorch 模型的的训练看B导即可,up主地址:Bubbliiiing的博客_CSDN博客-神经网络学习小记录,睿智的目标检测,有趣的数据结构算法领域博主 模型训练完成之后,在predict.py中设置mode="export_onnx"即可......