博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[leetcode] 63. Unique Paths II (medium)
阅读量:4574 次
发布时间:2019-06-08

本文共 1828 字,大约阅读时间需要 6 分钟。

思路:
用到dp的思想,到row,col点路径数量 :

path[row][col]=path[row][col-1]+path[row-1][col];

遍历row*col,如果map[row][col]为1,则将其置为0;如果非1,则进行上述公式。

最后返回path[终点row][终点col]的值即为解。

一开始的代码,beat 44%,效率不高

class Solution { public:  int uniquePathsWithObstacles(vector
> &obstacleGrid) { int rowSize = obstacleGrid.size(); int colSize = obstacleGrid[0].size(); if (obstacleGrid[0][0] == 1) return 0; obstacleGrid[0][0] = 1; for (int col = 1; col < colSize; col++) { if (obstacleGrid[0][col] == 1) obstacleGrid[0][col] = 0; else obstacleGrid[0][col] += obstacleGrid[0][col - 1]; } for (int row = 1; row < rowSize; row++) { if (obstacleGrid[row][0] == 1) obstacleGrid[row][0] = 0; else obstacleGrid[row][0] += obstacleGrid[row-1][0]; } for (int i = 1; i < rowSize; i++) { for (int j = 1; j < colSize; j++) { if (obstacleGrid[i][j] == 1) obstacleGrid[i][j] = 0; else obstacleGrid[i][j] = obstacleGrid[i - 1][j] + obstacleGrid[i][j - 1]; } } return obstacleGrid[rowSize - 1][colSize - 1]; }};

优化后的代码:

使用额外一个数组记录走到每一列有几种走法,因为题目只求终点,则使用一维数组即可。
使用一个额外的整型pre记录当前的前一步有多少种走法。(左边走来+上边走来)
则有:

pre(当前)=dp[col](上一行当前列) + pre(左一格当前行);dp[col](当前)=pre;

beat 100%

class Solution { public:  int uniquePathsWithObstacles(vector
> &obstacleGrid) { int rowSize = obstacleGrid.size(); int colSize = obstacleGrid[0].size(); int dp[colSize] = {0}; int pre = 1; for (int i = 0; i < rowSize; i++) { for (int j = 0; j < colSize; j++) { if (obstacleGrid[i][j] == 0) { pre += dp[j]; dp[j] = pre; } else { pre = 0; dp[j] = 0; } } pre=0; } return dp[colSize-1]; }};

转载于:https://www.cnblogs.com/ruoh3kou/p/9893422.html

你可能感兴趣的文章
判断是否包含指定的字符
查看>>
[Html5] HTML5 开发手机应用
查看>>
[工具] 各种主流 SQLServer 迁移到 MySQL 工具对比
查看>>
(二)Maven 基本概念——依赖、生命周期、仓库管理、聚合&继承
查看>>
py4CV例子3Mnist识别和ANN
查看>>
【4Opencv】如何识别出轮廓准确的长和宽
查看>>
现货黄金交易计划摸索
查看>>
Django中国|Django中文社区——python、django爱好者交流社区
查看>>
java中的toArray()
查看>>
java数据库之JDBC
查看>>
C语言 strcpy,memcpy,memmove,memccpy函数
查看>>
SqlSession 内部运行
查看>>
C语言一个小程序的bug疑问 数组相关[已解决]
查看>>
空指针与野指针的区别
查看>>
Ubuntu的root用户问题
查看>>
Linux启动新进程的几种方法及比较[转]
查看>>
使用Python定义类及创建对象
查看>>
[SoapUI] 比较两个不同环境下的XML Response, 从外部文件读取允许的偏差值,输出结果到文本文件...
查看>>
Freemarker页面语法(转载)
查看>>
hadoop 3.x 完全分布式集群搭建/异常处理/测试
查看>>