leetcode 63 不同的路径2
描述:
从左上角走到右下角,中间可能有若干阻碍;
题目给出一个矩阵,0表示可以走,1表示有障碍。
解决:
思路同第一题,只是如果上面或左边有障碍,自身不一定能走,注意些边界条件即可,复杂度仍是m*n。
为了防止和真正的路径1冲突,走过的障碍改为-1。
int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
    int m = obstacleGrid.size();
    int n = obstacleGrid[].size();
    for (int i = ; i < m; ++i) {
        for (int j = ; j < n; ++j) {
            if (obstacleGrid[i][j] == ) {
                obstacleGrid[i][j] = -;
                continue;
            }
            if (i ==  && j == )
                obstacleGrid[][] = ;
            else if (i == )
                obstacleGrid[][j] = obstacleGrid[][j - ];
            else if (j == )
                obstacleGrid[i][] = obstacleGrid[i - ][];
            else if (obstacleGrid[i - ][j] == - && obstacleGrid[i][j - ] == -)
                obstacleGrid[i][j] = -;
            else if (obstacleGrid[i - ][j] == -)
                obstacleGrid[i][j] = obstacleGrid[i][j - ];
            else if (obstacleGrid[i][j - ] == -)
                obstacleGrid[i][j] = obstacleGrid[i - ][j];
            else if (obstacleGrid[i][j] == )
                obstacleGrid[i][j] = -;
            else
                obstacleGrid[i][j] = obstacleGrid[i - ][j] + obstacleGrid[i][j - ];
        }
    }
    if (obstacleGrid[m - ][n - ] == -)
        return ;
    return obstacleGrid[m - ][n - ];
}
leetcode 63 不同的路径2的更多相关文章
- LeetCode 高效刷题路径
		LeetCode 高效刷题路径 Hot 100 https://leetcode.com/problemset/hot-100/ https://leetcode-cn.com/problemset/ ... 
- [LeetCode] 63. Unique Paths II 不同的路径之二
		A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). The ... 
- Java实现 LeetCode 63 不同路径 II(二)
		63. 不同路径 II 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为"Start" ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角(在 ... 
- LeetCode 63. Unique Paths II不同路径 II (C++/Java)
		题目: A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). ... 
- LeetCode 63. Unique Path II(所有不同路径之二)
		Follow up for "Unique Paths": Now consider if some obstacles are added to the grids. How m ... 
- LeetCode第63题--不同路径
		一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” ).机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角(在下图中标记为“Finish”).现在考虑网格中 ... 
- [LeetCode] 63. 不同路径 II ☆☆☆(动态规划)
		描述 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角(在下图中标记为“Finish”). 现在 ... 
- LeetCode 63. 不同路径 II(Unique Paths II)
		题目描述 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角(在下图中标记为“Finish”). ... 
- leetcode 63 不同路径II
		二维数组动态规划,还可以采用一维数组进行动态规划. class Solution { public: int uniquePathsWithObstacles(vector<vector< ... 
随机推荐
- L206
			There are so many new books about dying that there are now special shelves set aside forthem in book ... 
- java创建类的5种方式
			1.使用new关键字 } → 调用了构造函数 这种方式,我们可以调用任意的构造函数(无参的和带参数的). 2.使用Class类的newInstance方法 } → 调用了构造函数 使用Class类的n ... 
- ConcurrentHashMap 分析
			转载请注明出处:http://blog.csdn.net/crazy1235/article/details/76795383 构造函数 JDK 1.5 引入了 ConcurrentHashMap . ... 
- Winform菜单之Menustrip
			有窗体必定有菜单了,可以直接使用菜单组件,也可以使用按钮(按钮就没法显示级联菜单的形式了). 下面重点介绍一下各种菜单 1.Menustrip 最常用的莫过于此菜单了,从工具栏中拖入一个menustr ... 
- Java第三次作业--面向对象基础(封装)
			Deadline: 2017-4-6 23:00 一.学习要点 认真看书并查阅相关资料,掌握以下内容: 掌握简单类的设计 掌握利用对象引用建立类与类之间的联系 掌握this关键字 掌握static关键 ... 
- idea 使用spring boot 搭建freemarker模板
			一丶新建maven spring boot 项目 新建好了开始使用模板 先看一个目录结构 二丶配置pox.xml <?xml version="1.0" encoding ... 
- 【liunx】nslookup命令
			“nslookup”域名解析是什么? 假设我们要开个网站,首先我们要去提供域名申请的机构申请域名,然后绑定一个IP地址, 域名比较容易记忆,不像IP地址都是数字,申请完域名,绑定域名,DNS就写入域名 ... 
- 【thrift】什么是rpc
- redis的maxmemory与maxmemory-policy关系
			如果redis配置了maxmemory和maxmemory-policy策略,则当redis内存数据达到maxmemory时,会根据maxmemory-policy配置来淘汰内存数据,以避免OOM.r ... 
- postgresql双机热备、高可用方案(采用pacemaker+corosync实现)
			http://blog.csdn.net/qguanri/article/details/51151974 需求描述 我们有两台centos7的数据库主机A.B.要对A.B实现双机热备,A作为数据库m ... 
