LeetCode Climbing Stairs

来源:互联网 发布:美国影子银行规模数据 编辑:程序博客网 时间:2024/06/06 18:51

原题链接在这里:https://leetcode.com/problems/climbing-stairs/

其实是Fibonacci Number, 举个例子,n = 100,假设登到99台阶有m种方法,登到98台阶有n种方法,那么从99到100都是上一步,所以还是m种方法, 从98台阶登到100都是一次登两个台阶,还是n种方法,若果在98登一个台阶,就是到了99,这种方法已经包含在最初登到99台阶的m种方法中了。

所以登到100的方法就是m+n.

AC Java:

public class Solution {    public int climbStairs(int n) {        /*        //Method 1        if(n == 0){            return 1;        }        if(n == 1){            return 1;        }        return climbStairs(n-1) + climbStairs(n-2);        */                /*        //Method 2        int [] arr = new int[n+1];        arr[0] = 1;        arr[1] = 1;        for(int i = 2; i <= n; i++){            arr[i] = arr[i-1] + arr[i-2];        }        return arr[n];        */        //Method 3        if(n == 1){            return 1;        }        if(n == 2){            return 2;        }        int first = 1;        int second = 2;        int res = 0;        for(int i = 3; i<=n; i++){            res = first + second;            first = second;            second = res;        }        return res;    }}



0 0
原创粉丝点击