不同路径Ⅱ

  • 题目
  • 思路与算法
  • 代码实现
  • 复杂度分析

题目

思路与算法

本题与上一道不带障碍的题基本没有什么太大区别,状态方程的差距就在于这个障碍处的处理:(复制了代码注释)

  1. // 第一行:无障碍,则该点dp等于其左边一点的dp(通行路径数),有障碍则将该点dp设为0即可
  2. // 第一列:无障碍,则该点dp等于其上面一点的dp(通行路径数),有障碍则将该点dp设为0即可
  3. // 其余非第一行与非第一列: 该点dp等于上面一点与左边一点dp之和,有障碍,则该点dp设为0即可。
  4. 顺带说一句我为什么需要考虑起点出现障碍的情况,真的扯淡,不写这个起点障碍的特殊处理,这题绝对过不了。。。mdzz

代码实现

package com.immunize.leetcode.uniquePathsWithObstacles;public class Solution {public int uniquePathsWithObstacles(int[][] obstacleGrid) {// 初始化使用到的变量int m = obstacleGrid.length;int n = obstacleGrid[0].length;int[][] dp = new int[m][n];// 起点有障碍,则不存在通行路径,返回0即可。if (obstacleGrid[0][0] == 1) {dp[0][0] = 0;return 0;}for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {// 到达此处,则起点没有障碍,通行路径数为1if (i == 0 && j == 0) {dp[0][0] = 1;}// 第一行:无障碍,则该点dp等于其左边一点的dp(通行路径数),有障碍则将该点dp设为0即可if (i == 0 && j != 0) {dp[i][j] = (obstacleGrid[i][j] == 1) ? 0 : dp[i][j - 1];}// 第一列:无障碍,则该点dp等于其上面一点的dp(通行路径数),有障碍则将该点dp设为0即可if (i != 0 && j == 0) {dp[i][j] = (obstacleGrid[i][j] == 1) ? 0 : dp[i - 1][j];}// 其余非第一行与非第一列: 该点dp等于上面一点与左边一点dp之和,有障碍,则该点dp设为0即可。if (i != 0 && j != 0) {dp[i][j] = (obstacleGrid[i][j] == 1) ? 0 : dp[i][j - 1] + dp[i - 1][j];}}}return dp[m - 1][n - 1];}
}

复杂度分析

20200219:不同路径Ⅱ(leetcode63)相关推荐

  1. leetcode63 不同路径II

    一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为"Start" ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角(在下图中标记为" ...

  2. 动态规划--Leetcode63.不同路径二

    一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为"Start" ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角(在下图中标记为" ...

  3. 20200706:不同路径 II(leetcode63)

    不同路径 II 题目 思路与算法 代码实现 题目 思路与算法 经典动态规划题,注意细节即可,代码注释很详细. 代码实现 class Solution {public int uniquePathsWi ...

  4. 伍六七带你学算法 动态规划 ——不同路径

    力扣 62. 不同路径 难度 中等 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为"Start" ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格 ...

  5. Go 语言同一个包内函数调用、包名和实际路径最后一个目录不一致问题

    以下代码的 GOPATH 路径为 "/home/wohu/GoCode" 1. 同一个包内的函数可以相互调用 代码结构如下: wohu@wohu:~/GoCode/src$ tre ...

  6. Python 标准库之 os (获取当前目录、读取/设置环境变量、重命名文件、运行shell命令、创建/删除/查看目录文件、判断目录/文件/存在、获取绝对路径、获取文件名、获取换行符、获取路径分隔符)

    1. os与sys模块的官方解释如下: os This module provides a portable way of using operating system dependent funct ...

  7. 二叉树中和为某一值的路径

    前言 输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径.(注意: 在返回值的list中,数组长度大的数 ...

  8. 获取当前脚本目录路径问题汇总

    20211223 https://blog.csdn.net/qq_43178297/article/details/88053836 获取上一层目录 import osprint('***获取当前目 ...

  9. python路径拼接os.path.join()函数的用法

    os.path.join()函数:连接两个或更多的路径名组件 1.如果各组件名首字母不包含'/',则函数会自动加上 2.如果有一个组件是一个绝对路径,则在它之前的所有组件均会被舍弃 3.如果最后一个组 ...

最新文章

  1. Navicat添加新数据、保存当前修改
  2. 曾被ICLR拒稿,字节跳动今斩获最佳论文,ACL 2021各大奖项揭晓
  3. windows7与虚拟机fedora 9.0文件共享
  4. LINUX修改文件权限 学习
  5. ES failed shard on node[XXX]: failed recovery, failure RecoveryFailedException XXX Too many openfile
  6. reporting services订阅
  7. C++学习 ---- 系列文章
  8. mysql sql 一部分记录_MySQL性能优化实践(很全面,值得收藏)
  9. sas中一些小的选项的含义
  10. 关系型数据库管理系统(RDBMS)与非关系型数据库(NoSQL)之间的区别
  11. ueditor富文本
  12. python搭建图书管理系统
  13. html酒店管理模板,酒店管理系统流程图模板分享及绘制技巧
  14. [转载]通过插件支持,Geronimo 提供了 one-click 升级
  15. [研究生]你该如何“精读”一篇文章?文献管理与文献笔记:以VCNet为例
  16. java-php-net-python-税务申报系统ssh计算机毕业设计程序
  17. JavaSE-day01
  18. css文字长度实现宽度自适应、显示三行超出省略号
  19. python 字符串方法 replace_python字符串方法replace()简介
  20. PC端应用程序自动化测试

热门文章

  1. 华为可折叠手机推迟发布;苹果获新专利可隔空操控iPhone;微软不放弃 IE | 极客头条...
  2. @前端工程师,节约网站流量用这一招就够了!
  3. 一顿操作猛如虎!云原生应用为何如此优秀?
  4. 阿里发力线下渠道,腾讯京东该如何打破其流量优势?
  5. 标榜 AI 的百度又玩区块链,跟风布局“加密猫”?
  6. c语言按键中断程序,单片机C语言代码:外部中断,按下中断按键LED不亮,LED1正常亮...
  7. java空间大战,看这篇足矣了!
  8. java生成json字符串,真香
  9. java对象描述开车_java面向对象
  10. php 实现错字检查,PHP每日一练:编写写字符串检查函数