63. 不同路径 II leetcode JAVA
题目
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。
现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?


网格中的障碍物和空位置分别用 1 和 0 来表示。
说明:m 和 n 的值均不超过 100。
示例 1:
输入:
[
[0,0,0],
[0,1,0],
[0,0,0]
]
输出: 2
解释:
3x3 网格的正中间有一个障碍物。
从左上角到右下角一共有2条不同的路径:
1. 向右 -> 向右 -> 向下 -> 向下
2. 向下 -> 向下 -> 向右 -> 向右
思路
class Solution {
    public int uniquePathsWithObstacles(int[][] a) {
        //回溯肯定可以
        //dp也可以
        int m = a.length;
        int n = a[0].length;
        int[][] dp = new int[m][n];
        for (int i = 0; i < m; i ++) {
            if (a[i][0] == 1) {
                break; //有障碍则直接跳出循环
            } else {
                dp[i][0] = 1;
            }
        }
        for (int i = 0; i < n; i ++) {
            if (a[0][i] == 1) {
                break;
            } else {
                dp[0][i] = 1;
            }
        }
        for (int i = 1; i < m; i ++) {
            for (int j = 1; j < n; j ++) {
                if (a[i][j] == 1) {
                    continue;
                }
                dp[i][j] = dp[i-1][j] + dp[i][j-1];
            }
        }
        return dp[m-1][n-1];
    }
}
63. 不同路径 II leetcode JAVA的更多相关文章
- Java实现 LeetCode 63 不同路径 II(二)
		63. 不同路径 II 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为"Start" ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角(在 ... 
- Leetcode之动态规划(DP)专题-63. 不同路径 II(Unique Paths II)
		Leetcode之动态规划(DP)专题-63. 不同路径 II(Unique Paths II) 初级题目:Leetcode之动态规划(DP)专题-62. 不同路径(Unique Paths) 一个机 ... 
- 刷题-力扣-63. 不同路径 II
		63. 不同路径 II 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/unique-paths-ii/ 著作权归领扣网络所有.商业转 ... 
- 63.不同路径II
		目录 63.不同路径Ⅱ 题目 题解 63.不同路径Ⅱ 题目 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为"Start" ). 机器人每次只能向下或者向右移动 ... 
- N-Queens II leetcode java
		题目: Follow up for N-Queens problem. Now, instead outputting board configurations, return the total n ... 
- 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. 不同路径 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< ... 
随机推荐
- Spring Boot自动配置
			Spring Boot自动配置原理 Spring Boot的自动配置注解是@EnableAutoConfiguration, 从上面的@Import的类可以找到下面自动加载自动配置的映射. org.s ... 
- MS SQL 2000 分配权限
			/** 分配权限 **/ use [master]create login [ln-tf\liaobin] from windows;gogrant control server to [ln-tf\ ... 
- centos7.3 防火墙设置
			1.查看firewall服务状态 systemctl status firewalld 2.查看firewall的状态 firewall-cmd --state 3.开启.重启.关闭.firewall ... 
- SSH中将hibernate托管给spring获取session的方法
			import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.SessionF ... 
- 如何在ArcMap中监听键盘鼠标事件(转)
			如何在ArcMap中监听键盘鼠标事件(转) Link: http://www.cnblogs.com/dyllove98/p/3155551.html 昨天有个朋友想要实现一个功能,就是在ArcMap ... 
- go 算法
			题目: 请实现一个算法,确定一个字符串的所有字符[是否全都不同].这里我们要求[不允许使用额外的存储结构].给定一个string,请返回一个bool值,true代表所有字符全都不同,false代表存在 ... 
- JobTracker和TaskTracker
			[JobTracker和TaskTracker] 1.JobTracker 对应于 NameNode,TaskTracker 对应于 DataNode. 2.JobTracker是一个master服 ... 
- Spring中的注解配置-注入bean
			在使用Spring框架中@Autowired标签时默认情况下使用 @Autowired 注释进行自动注入时,Spring 容器中匹配的候选 Bean 数目必须有且仅有一个.当找不到一个匹配的 Bean ... 
- udp调优经验
			降低丢包率: 1. 增大输入输出缓冲区 2. 调用发送接口时增大单次发送的buffer大小 8k 3. 多个socket 多线程接收 4 发送端流量控制,并且保证发送速率均匀 降低时延: 减小包大小? ... 
- Laravel 引入自定义类库或第三方类库
			强烈建议引入的类 都是含有命名空间的,这样使用起来就不会出现重名的情况.!!当然,没有命名空间也可以使用,就是类名字(非文件名)最好复杂一些.(重复也不要紧,程序会自己判断) laravel5.4中如 ... 
