Skip to content

Commit 165fd42

Browse files
添加 0070.爬楼梯.md C语言版本
1 parent 014dbf0 commit 165fd42

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

problems/0070.爬楼梯.md

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -296,6 +296,48 @@ var climbStairs = function(n) {
296296
};
297297
```
298298

299+
### C
300+
```c
301+
int climbStairs(int n){
302+
//若n<=2,返回n
303+
if(n <= 2)
304+
return n;
305+
//初始化dp数组,数组大小为n+1
306+
int *dp = (int *)malloc(sizeof(int) * (n + 1));
307+
dp[0] = 0, dp[1] = 1, dp[2] = 2;
308+
309+
//从前向后遍历数组,dp[i] = dp[i-1] + dp[i-2]
310+
int i;
311+
for(i = 3; i <= n; ++i) {
312+
dp[i] = dp[i - 1] + dp[i - 2];
313+
}
314+
//返回dp[n]
315+
return dp[n];
316+
}
317+
```
318+
319+
优化空间复杂度:
320+
```c
321+
int climbStairs(int n){
322+
//若n<=2,返回n
323+
if(n <= 2)
324+
return n;
325+
//初始化dp数组,数组大小为3
326+
int *dp = (int *)malloc(sizeof(int) * 3);
327+
dp[1] = 1, dp[2] = 2;
328+
329+
//只记录前面两个台阶的状态
330+
int i;
331+
for(i = 3; i <= n; ++i) {
332+
int sum = dp[1] + dp[2];
333+
dp[1] = dp[2];
334+
dp[2] = sum;
335+
}
336+
//返回dp[2]
337+
return dp[2];
338+
}
339+
```
340+
299341

300342
-----------------------
301343
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div>

0 commit comments

Comments
 (0)