63. Unique Paths II Medium
来源:互联网 发布:android性能优化典范 编辑:程序博客网 时间:2024/06/06 08:37
接上一题Unique Paths,这里增加了有障碍的情况。其实也很好理解。对于数组中不是边界的情况,原本d[i][j]等于来自上方和左边两个的和,如果上面是障碍,则从上面来的路径数为0,左边类似。不同的是,边界中原本路径数为1,如果边界中有障碍,障碍后面的都为0。需要注意的是,存在起点有障碍和终点有障碍的情况。
class Solution {public: int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) { int m = obstacleGrid.size(), n = obstacleGrid[0].size(); int d[m][n]; if(obstacleGrid[m - 1][n - 1] == 1)return 0; //终点可能是障碍 for (int i = 0; i < m; ++i) { for (int j = 0; j < n; j++){ if(i == 0 && j == 0)d[i][j] = obstacleGrid[0][0] == 1? 0: 1;//起点可能是障碍 //边界情况,不在乎障碍处的值,因为不会用到 else if(i == 0 && j != 0){ d[i][j] = obstacleGrid[i][j - 1] == 1? 0: d[i][j - 1]; //这里不直接赋1,可以免去检查前面是否有障碍 } else if (j == 0 && i != 0) { d[i][j] = obstacleGrid[i - 1][j] == 1? 0: d[i - 1][j]; } else { int up = obstacleGrid[i - 1][j] == 1? 0: d[i - 1][j]; int left = obstacleGrid[i][j - 1] == 1? 0: d[i][j - 1]; d[i][j] = up + left; } } } return d[m - 1][n - 1]; }};
阅读全文
0 0
- 63. Unique Paths II -Medium
- 63. Unique Paths II Medium
- 63. Unique Paths II Medium
- [Medium]Unique Paths II
- Leetcode 63. Unique Paths II (Medium) (cpp)
- Leetcode 63. Unique Paths II (Medium) (java)
- 63. Unique Paths II 类别:动态规划 难度:medium
- Leetcode解题笔记 63. Unique Paths II [Medium] 动态规划
- [Leetcode 63, Medium] Unique Paths II
- 【LeetCode】(63)Unique Paths II(Medium)
- Medium 63题 Unique Paths II
- (算法分析Week12)Unique Paths II[Medium]
- 63. Unique Paths II
- 63. Unique Paths II
- 63. Unique Paths II
- 63. Unique Paths II
- 63. Unique Paths II
- 63. Unique Paths II
- JS中原型链中的prototype与_proto_的理解和区别
- Linux--RH254---PXE
- 多个装饰器的执行顺序
- 我对flex弹性布局的认识
- SpringMVC-DispatcherServlet配置(Spring-servlet.xml)
- 63. Unique Paths II Medium
- 数据科学学习笔记6 --- 数据可视化案例与工具
- 很坑的一个问题:eclipse和android studio中的versionName和versionCode的设置问题
- android 定时器(Handler Timer Thread AlarmManager CountDownTimer)
- C++程序设计 指针与引用
- 单片机加解密原理
- iOS系统方法挑选图片
- lnmp.org 安装环境的,root权限都没法删除网站文件夹,问题解决
- 7.5_以扭曲后的帧速率播放动画