首页 > 其他分享 >63. Unique Paths II刷题笔记

63. Unique Paths II刷题笔记

时间:2023-05-26 22:07:49浏览次数:57  
标签:Paths obstacleGrid return int List II range 63 dp


问题描述 主要是稀奇古怪的边界条件,例如左上角是1,最左边和最上边是1,有多个1,输入为行,或者列

class Solution:
    def uniquePathsWithObstacles(self, obstacleGrid: List[List[int]]) -> int:
        m = len(obstacleGrid)
        n = len(obstacleGrid[0])
        dp = [0]*m
        if obstacleGrid[0][0]:
            return 0
        dp[0] = 1
        for i in range(1,m):
            if obstacleGrid[i][0]:
                dp[i] = 0
            else:
                dp[i] = dp[i-1]
            
        
        for i in range(1,n):
            if obstacleGrid[0][i]:
                dp[0] = 0
            for j in range(1,m):
                if obstacleGrid[j][i]:
                    dp[j] = 0
                else:
                    dp[j]+=dp[j-1]
        return dp[m-1]

运行结果:

63. Unique Paths II刷题笔记_leetcode


在第一列的初始化用上break,速度大大提升

class Solution:
    def uniquePathsWithObstacles(self, obstacleGrid: List[List[int]]) -> int:
        m = len(obstacleGrid)
        n = len(obstacleGrid[0])
        dp = [0]*m
        if obstacleGrid[0][0]:
            return 0
        dp[0] = 1
        for i in range(1,m):
            if obstacleGrid[i][0]:
                break
            else:
                dp[i] = 1               
            
        
        for i in range(1,n):
            if obstacleGrid[0][i]:
                dp[0] = 0
            for j in range(1,m):
                if obstacleGrid[j][i]:
                    dp[j] = 0
                else:
                    dp[j]+=dp[j-1]
        return dp[m-1]

63. Unique Paths II刷题笔记_leetcode_02


标签:Paths,obstacleGrid,return,int,List,II,range,63,dp
From: https://blog.51cto.com/u_16131692/6359343

相关文章

  • 62. Unique Paths刷题笔记
    问题描述用动态规划做的,注意最左边和最上边的情况设置从0到n-1的列表可以用list(range(n))classSolution:defuniquePaths(self,m:int,n:int)->int:dp=[1]*mforiinrange(1,n):forjinrange(1,m):dp[j]+=dp[j......
  • 107. Binary Tree Level Order Traversal II刷题笔记
    问题描述自底向上层序搜索python代码#Definitionforabinarytreenode.#classTreeNode:#def__init__(self,val=0,left=None,right=None):#self.val=val#self.left=left#self.right=rightclassSolution:deflevelOrd......
  • 52. N-Queens II刷题笔记
    回溯算法,参考该题解classSolution:deftotalNQueens(self,n:int)->int:diag1=set()diag2=set()usedCols=set()returnself.helper(n,diag1,diag2,usedCols,0)defhelper(self,n,diag1,diag2,usedCols,......
  • 剑指Offer58-II.左旋转字符串——学习笔记
    题目:字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。示例1:输入:s="abcdefg",k=2输出:"cdefgab"示例2:输入:s="lrloseum......
  • Python默认编码错误SyntaxError: Non-ASCII character '\xe5'之解决方法
    在编写Python时,当使用中文输出或注释时运行脚本,会提示错误信息:解决方法:python的默认编码文件是用的ASCII码,你将文件存成了UTF-8!!!(文件中存在中文或者其他语言,就会出现此问题!)解决办法很简单!!!在文件开头加入:# -*- coding: U......
  • Educational Codeforces Round 63 (Rated for Div. 2) A,B,C
    A.ReverseaSubstring传送门就是找不满足升序排列的字母,输出就行了。#include<bits/stdc++.h>#definelllonglongusingnamespacestd;constintmaxn=3e5+10;chars[maxn];intmain(){#ifndefONLINE_JUDGEfreopen("in","r",stdin);#endif//ONL......
  • 1049. 最后一块石头的重量 II
    有一堆石头,用整数数组stones表示。其中stones[i]表示第i块石头的重量。每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为x和y,且x<=y。那么粉碎的可能结果如下:如果x==y,那么两块石头都会被完全粉碎;如果x!=y,那么重量为x的石头将会完全......
  • #yyds干货盘点# LeetCode程序员面试金典:路径总和 II
    题目:给你二叉树的根节点root和一个整数目标和targetSum,找出所有从根节点到叶子节点路径总和等于给定目标和的路径。叶子节点是指没有子节点的节点。 示例1:输入:root=[5,4,8,11,null,13,4,7,2,null,null,5,1],targetSum=22输出:[[5,4,11,2],[5,8,4,5]]示例2:输入:root=......
  • SP15637 Mr Youngs Picture Permutations 题解
    题意给定一个最多有\(5\)排的一个队伍,每一个位置对应一个同学,给定总人数和第\(i\)排要站\(n_i\)个人。要求每行左边的同学身高要大于右边的,每列从上往下要从大到小。问:满足要求的一共有多少种方案。思路DP首先考虑,在这个题目中,有用的状态有每列最后的人的高度,每行......
  • Problem B: 时间和日期类(II)
    HomeWebBoardProblemSetStandingStatusStatisticsProblemB:时间和日期类(II)TimeLimit:4Sec  MemoryLimit:128MBSubmit:2673  Solved:1980[Submit][Status][WebBoard]Description设计一个日期时间类,用于读取输入的数据,按格式输出日期和时间......