File tree Expand file tree Collapse file tree 1 file changed +42
-0
lines changed Expand file tree Collapse file tree 1 file changed +42
-0
lines changed Original file line number Diff line number Diff 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 >
You can’t perform that action at this time.
0 commit comments