刷算法(11)-爬楼梯 发表于 2019-10-03 分类于 算法 阅读次数: 70. 爬楼梯假设你正在爬楼梯。需要n阶你才能到达楼顶。每次你可以爬1或2个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定n是一个正整数。 示例1 12345输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶 示例2 123456输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. 1 阶 + 2 阶3. 2 阶 + 1 阶 解法1234567891011121314class Solution { public int climbStairs(int n) { if (n == 1 || n == 2){ return n; } int step[] = new int[n+1]; step[1] = 1; step[2] = 2; for (int i = 3; i < n+1; i++){ step[i] = step[i-1] + step[i-2]; } return step[n]; }} 心得 需要识别出来这是一道典型的动态规划算法 上述代码关键点是对特殊的n要做处理返回,即处理好n的边界。 参考 官方解法