leetcode [Climbing Stairs]

来源:互联网 发布:matlab 2015b mac下载 编辑:程序博客网 时间:2024/06/05 10:42
    public int climbStairs(int n) {        /*if(n == 1) return 1;        if(n == 2) return 2;        return climbStairs(n - 1) + climbStairs(n - 2);*/        //用递归会超时,而且效率低    ArrayList<Integer> list = new ArrayList<Integer>();    list.add(1);    list.add(2);    int temp = 0;    for(int i = 2; i < n; i++){    temp = list.get(i - 1) + list.get(i - 2);    list.add(temp);    }    return list.get(n - 1);    }

用数组也可以实现,数组长度一共是n,可以确定的:

public class Solution {    public int climbStairs(int n) {        /*if(n == 1) return 1;        if(n == 2) return 2;        return climbStairs(n - 1) + climbStairs(n - 2);*/        //用递归会超时,而且效率低    if(n == 1 || n == 2)    return n;//这里先处理了否则后面会有下标越界    int[] res = new int[n];    res[0] = 1;    res[1] = 2;    for(int i = 2; i < n; i++)    res[i] = res[i - 1] + res[i - 2];    return res[n - 1];    }}


0 0