leetcode #63 in cpp

原创 2016年05月30日 22:51:08

Follow up for "Unique Paths":

Now consider if some obstacles are added to the grids. How many unique paths would there be?

An obstacle and empty space is marked as 1 and 0 respectively in the grid.

For example,

There is one obstacle in the middle of a 3x3 grid as illustrated below.

[
  [0,0,0],
  [0,1,0],
  [0,0,0]
]

The total number of unique paths is 2.



Solution:

It is almost the same as #62. In this question we have to check if a position(i,j) has obstacle. If it has one, leave dp[i][j] as 0 as it has no paths to destination. 

Code:

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) return 0;//if destination has obstacle, it can never be reached
        vector<vector<int>> dp(m, vector<int>(n,0));
        dp[m-1][n-1] = 1;//set destination be 1
        for(int i = m-2; i >=0 && n-1>=0; i --){//right border
            if(obstacleGrid[i][n-1]!=1) dp[i][n-1] = dp[i+1][n-1];//if a position has obstacle, the cell above it would have path 0 to destination.
        }
        for(int i = n-2; i >=0 && m-1 >= 0; i--){//bottom row
            if(obstacleGrid[m-1][i]!=1) dp[m-1][i] = dp[m-1][i+1];//if a position has obstacle, the cells at its left would have path 0 to destination.
        }
        for(int i = m-2; i >= 0; i --){
            for(int j = n-2; j >= 0; j --){
                //if it is obstacle, skip it and leave it as 0. There are no paths from obstacle to destination
                //if not obstacle, then we could calculate the number of paths. 
                if(obstacleGrid[i][j] != 1) dp[i][j] += dp[i+1][j] + dp[i][j+1];
            }
        }
        return dp[0][0];
    }
};


[LeetCode]63 不同的路径总数之二

Unique Paths II(不同的路径总数之二)【难度:Medium】 Follow up for “Unique Paths”:Now consider if some obstacles a...
  • qq_14821023
  • qq_14821023
  • 2016年02月28日 13:42
  • 343

Chrome 63的安全新特性,TLS 1.3终于要来了!

Chrome 63的安全新特性,TLS 1.3终于要来了!
  • liaoxj2046
  • liaoxj2046
  • 2017年12月12日 15:54
  • 169

中文乱码的产生原因

先说一下什么叫乱码 不知道有没有人这样认为过,一个字符串不仅仅包含字符,还有隐藏着它的编码信息。比如java中String str = "你好";我之前是这样认为的,str这个字符串隐藏着它的编码方式...
  • java_gchsh
  • java_gchsh
  • 2017年07月03日 10:17
  • 104

HDFS的数据流

HDFS写数据流程4.1.1 剖析文件写入1)客户端向namenode请求上传文件,namenode检查目标文件是否已存在,父目录是否存在。2)namenode返回是否可以上传。3)客户端请求第一个 ...
  • morexyoung
  • morexyoung
  • 2017年12月28日 22:53
  • 25

【LeetCode-面试算法经典-Java实现】【所有题目目录索引】

【博文总目录>>>】 LeetCode算法题典   LeetCode是一个准备面试非常有用的网站,是非常值得去的地方,里面都是一些经典的面试题,这些题目在Google,Microsof...
  • DERRANTCM
  • DERRANTCM
  • 2015年07月16日 06:27
  • 24532

ANR原因分析及解决方法

内容目录 1 ANR是如何产生的..............................................................................
  • u011006622
  • u011006622
  • 2017年12月28日 16:03
  • 43

LeetCode 问题汇总(算法,难度,频率)

Id Question Difficulty Frequency Data Structures Algorithms 1 T...
  • sbitswc
  • sbitswc
  • 2014年03月13日 11:58
  • 12081

[LeetCode刷题笔记] 关于LeetCode的前言

又到了一年毕业就业季了,三年前的校招季我逃避了,可这一次终于还是要轮到我了=_=||。 作为要准备踏入码农行业的人来说,要准备校招,怎么能不去刷刷LeetCode呢? LeetCode收录了许多互联网...
  • tostq
  • tostq
  • 2016年07月22日 21:32
  • 2980

leetcode解题总结(持续更新)

树型:DFS或BFS(不够+状态存储,缩短时间)(如数位DP,就是DFS+状态存储) 链表:多用two pointer 无序数组:hash映射(O(1),map,set等),并查集,字典树tire 有...
  • ChinaJane163
  • ChinaJane163
  • 2016年09月21日 20:53
  • 589

[leetcode]--刷leetcode算法目录和算法总结目录

这篇博文是记录所有刷leetcode算法的目录以及全部源码的github地址:所有代码的github地址:https://github.com/leetcode-hust/leetcode/tree/...
  • u010853261
  • u010853261
  • 2017年02月02日 07:54
  • 1004
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:leetcode #63 in cpp
举报原因:
原因补充:

(最多只允许输入30个字)