Skip to content

Commit 9d02c76

Browse files
添加 0063.不同路径II.md C语言优化空间版本
1 parent 31e6a1a commit 9d02c76

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

problems/0063.不同路径II.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -539,6 +539,39 @@ int uniquePathsWithObstacles(int** obstacleGrid, int obstacleGridSize, int* obst
539539
}
540540
```
541541
542+
空间优化版本:
543+
```c
544+
int uniquePathsWithObstacles(int** obstacleGrid, int obstacleGridSize, int* obstacleGridColSize){
545+
int m = obstacleGridSize;
546+
int n = obstacleGridColSize[0];
547+
int *dp = (int*)malloc(sizeof(int) * n);
548+
int i, j;
549+
550+
// 初始化dp为第一行起始状态。
551+
for (j = 0; j < n; ++j) {
552+
if (obstacleGrid[0][j] == 1)
553+
dp[j] = 0;
554+
else if (j == 0)
555+
dp[j] = 1;
556+
else
557+
dp[j] = dp[j - 1];
558+
}
559+
560+
for (i = 1; i < m; ++i) {
561+
for (j = 0; j < n; ++j) {
562+
if (obstacleGrid[i][j] == 1)
563+
dp[j] = 0;
564+
// 若j为0,dp[j]表示最左边一列,无需改动
565+
// 此处dp[j],dp[j-1]等同于二维dp中的dp[i-1][j]和dp[i][j-1]
566+
else if (j != 0)
567+
dp[j] += dp[j - 1];
568+
}
569+
}
570+
571+
return dp[n - 1];
572+
}
573+
```
574+
542575
### Scala
543576
544577
```scala

0 commit comments

Comments
 (0)