[抄题]:
假设你正在爬楼梯,需要n步你才能到达顶部。但每次你只能爬一步或者两步,你能有多少种不同的方法爬到楼顶部?
[思维问题]:
- 不知道一步、两步怎么加。还是用iteration迭代。此题公式可被称为斐波那契数列。
- 不知道和坐标型有什么关系:列j = 1即可
[一句话思路]:
生兔子问题:把大数赋给小数
[输入量]:空: 正常情况:特大:特小:程序里处理到的特殊情况:异常情况(不合法不合理的输入):
[画图]:
[一刷]:
[二刷]:
[三刷]:
[四刷]:
[五刷]:
[五分钟肉眼debug的结果]:
[总结]:
- 把大数赋给小数
- state是声明有变量,initialize是给变量赋值
[复杂度]:Time complexity: O(n^2) Space complexity: O(n^2)
[英文数据结构或算法,为什么不用别的数据结构或算法]:
[其他解法]:
[Follow Up]:
[LC给出的题目变变变]:
746. Min Cost Climbing Stairs最值爬楼梯
[代码风格] :
public class Solution { /** * @param n: An integer * @return: An integer */ public int climbStairs(int n) { //corner case if (n <= 0) { return 0; } if (n == 1) { return 1; } if (n == 2) { return 2; } //state=//initialization int one_step = 2; int two_step = 1; int all_step = 0; //function for (int i = 2; i < n; i++) { all_step = one_step + two_step; two_step = one_step; one_step = all_step; } //result return all_step; } }