帮助传销做网站违法吗,品牌网站设计图片,深圳燃气公司地址在哪里,安吉网站制作假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢#xff1f; 示例 1#xff1a;
输入#xff1a;n 2
输出#xff1a;2
解释#xff1a;有两种方法可以爬到楼顶。
1. 1 阶 1 阶
2. 2 阶
示例 2#x…假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢 示例 1
输入n 2
输出2
解释有两种方法可以爬到楼顶。
1. 1 阶 1 阶
2. 2 阶
示例 2
输入n 3
输出3
解释有三种方法可以爬到楼顶。
1. 1 阶 1 阶 1 阶
2. 1 阶 2 阶
3. 2 阶 1 阶
思路
最简单的方法用递归但是层数太高会导致栈溢出 public int climbStairs(int n) {if (n 0) return 0; // 如果n小于等于0返回0或者抛出一个异常取决于你的需求if (n 1) return 1;if (n 2) return 2; // 这一步是可选的但可以提高n2时的效率int[] dp new int[n 1]; // 创建一个数组来保存中间结果dp[1] 1;dp[2] 2;for (int i 3; i n; i) {dp[i] dp[i - 1] dp[i - 2]; // 动态规划的核心递推关系}return dp[n];}