题目

70. 爬楼梯

题解





代码


/** * code70 */

import java.util.*;

public class code70 {

    // public static int climbStairs(int n) {
    // if (n == 1) {
    // return 1;
    // }
    // int dp[] = new int[n + 1];
    // dp[1] = 1;
    // dp[2] = 2;
    // for (int i = 3; i <= n; i++) {
    // dp[i] = dp[i - 1] + dp[i - 2];
    // }
    // return dp[n];
    // }

    public static int climbStairs(int n) {
        if (n == 1 || n == 2) {
            return n;
        }

        int f1 = 1;
        int f2 = 2;
        int sum = 0;

        for (int i = 3; i <= n; i++) {
            sum = f1 + f2;
            f1 = f2;
            f2 = sum;
        }
        return sum;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNextInt()) {
            int n = sc.nextInt();
            int res = climbStairs(n);
            System.out.println(res);
        }
        sc.close();
    }
}

参考

  1. 爬楼梯——题解一
  2. 画解算法:70. 爬楼梯——题解二