* 题意说明: * 假设你正在爬楼梯。需要 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 阶 * * 提示: * 1 <= n <= 45 *
少种不同的方法可以爬到楼顶呢?
记忆化搜索(Memoization Search)是一种优化算法的技术,用于避免重复计算已经计算过的结果。它通常应用于递归或动态规划算法中,可以显著地提高算法性能。
public class ClimbStairs {public static void main(String[] args) {// 验证代码逻辑}public static int climbStairs(int n) {return 0;}
}
记忆化搜索来实现斐波那契数列的计算
public class ClimbStairs {public static void main(String[] args) {// 验证代码逻辑ClimbStairs climbStairs = new ClimbStairs();System.out.println(climbStairs.climbStairs(5));}public int climbStairs(int n) {//这里大小根据自己需要,或者使用 List 也可以int[] dp = new int[100000];dp[1] = 1;dp[2] = 2;for( int i = 3;i <= n;++i ){dp[i] = dp[i-1] + dp[i-2];}return dp[n];}
}