leetcode: Climbing Stairs

来源:互联网 发布:程序员小说 编辑:程序博客网 时间:2024/05/17 01:36

很基础的一道题,每一步有两种选择,上一阶还是两阶,即第i阶的结果等于i-1和i-2的结果之和。  DP即可。  这里需要注意的是第i阶时的方法数十固定的,当n较大时,可能会非常多次的用到第i阶时的方法数,为了避免每次都再算一遍,我们要用一个数组来记录第i阶的方法数来减少时间消耗。


public class Solution {    public int climbStairs(int n) {        if( n == 0 )        {            return 0;        }        if( n == 1 )        {            return 1;        }        if( n == 2 )        {            return 2;        }        int[] a = new int[1000];        a[0] = 0;        a[1] = 1;        a[2] = 2;        for( int i=3;i<=n;i++ )        {            a[i] = a[i-1]+a[i-2];        }        return a[n];    }}


0 0
原创粉丝点击