【leetcode】Climbing Stairs
You are climbing a stair case. It takes n steps to reach to the top.
Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?
题解,变相的斐波那契数列。因为最后一步到达n的时候有两种选择,走1步走到台阶n和走2步走到台阶n。如果走一步走到台阶n,那么之前的n-1级台阶有f(n-1)种走法;如果走2步走到台阶n,那么之前的n-2级台阶有f(n-2)种走法,所以一共有f(n-1)+f(n-2)步走法。
代码如下:
1 class Solution { 2 public: 3 int climbStairs(int n) { 4 vector<int> num_method(n+1); 5 num_method[0] = num_method[1] = 1; 6 for(int i = 2;i <= n;i ++) 7 num_method[i] = num_method[i-1]+num_method[i-2]; 8 return num_method[n]; 9 } 10 };
Java代码:不需要数组,只需要保存前面两级台阶的走法数即可。
1 public class Solution { 2 public int climbStairs(int n) { 3 if(n == 1) 4 return 1; 5 if(n == 2) 6 return 2; 7 int first = 1; 8 int second = 2; 9 int answer = 0; 10 for(int i = 3;i <= n;i++) 11 { 12 answer = first + second; 13 first = second; 14 second = answer; 15 } 16 return answer; 17 } 18 }
分类:
leetcode刷题总结
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了