添加 0070.爬楼梯.md C语言版本

This commit is contained in:
Guanzhong Pan
2022-01-12 15:59:27 +00:00
parent 014dbf0f79
commit 165fd42733

View File

@ -296,6 +296,48 @@ var climbStairs = function(n) {
};
```
### C
```c
int climbStairs(int n){
//若n<=2返回n
if(n <= 2)
return n;
//初始化dp数组数组大小为n+1
int *dp = (int *)malloc(sizeof(int) * (n + 1));
dp[0] = 0, dp[1] = 1, dp[2] = 2;
//从前向后遍历数组dp[i] = dp[i-1] + dp[i-2]
int i;
for(i = 3; i <= n; ++i) {
dp[i] = dp[i - 1] + dp[i - 2];
}
//返回dp[n]
return dp[n];
}
```
优化空间复杂度:
```c
int climbStairs(int n){
//若n<=2返回n
if(n <= 2)
return n;
//初始化dp数组数组大小为3
int *dp = (int *)malloc(sizeof(int) * 3);
dp[1] = 1, dp[2] = 2;
//只记录前面两个台阶的状态
int i;
for(i = 3; i <= n; ++i) {
int sum = dp[1] + dp[2];
dp[1] = dp[2];
dp[2] = sum;
}
//返回dp[2]
return dp[2];
}
```
-----------------------
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div>