63. Unique Paths II
2015-07-30 13:09
387 查看
此题与Unique Paths的解法一样,f[j]表示从(0,0)到(当前row, j)有几种走法,上面来的就是自己,左边来的已经算好了,所以 f[j] = f[j] + f[j – 1]。需要特别注意f的初始化值和循环的起始值。下面的这段代码非常精妙,需要好好理解掌握。代码如下:
class Solution { public: int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) { int m = (int)obstacleGrid.size(), n = (int)obstacleGrid[0].size(); // one way DP, f[i] means from (0, 0) to (currRow, i) has how many ways vector<int> f(n, 0); f[0] = obstacleGrid[0][0] ? 0 : 1; for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { //comes from above or left if (obstacleGrid[i][j]) { f[j] = 0; } else { if (j == 0) //first col only from above f[j] = f[j]; else f[j] = f[j] + f[j - 1]; //这一行代码逻辑非常微妙 } } } return f[n - 1]; } };
相关文章推荐
- Integer.valueOf(String) 方法之惑
- UI基础控件总结
- 【EasyUi DataGrid】批量删除
- java中线程队列BlockingQueue的用法
- NGUI Key Binding使用方法
- CharSequence类型
- NetSuite云erp的常见问题
- UITableViewCell 重用机制
- UIKit 视图的生命周期
- VMWare虚拟机迁移时,打开后提示主机不支持 CPUID 错误
- String,StringBuffer,StringBuilder的区别
- UIView的autoresizingMask属性探究
- UIView的autoresizingMask属性探究
- uibuttton中的等价替换(方便实用)
- 【Android UI】状态栏和toolbar颜色一致
- 62. Unique Paths
- 队列(Queue) C 语言实现
- HDOJ 5147 Sequence II 树阵
- 格而知之2:UIView的autoresizingMask属性探究
- UILabel常用属性小结