509. Fibonacci Number

T: O(n)

S: O(n)

class Solution {
    public int fib(int n) {
        if (n == 0 || n == 1) {
            return n;
        }
        int[] dp = new int[n+1];
        dp[0] = 0;
        dp[1] = 1;
        for (int i = 2; i <= n; i++) {
            dp[i] = dp[i-1] + dp[i-2];
        }
        return dp[n];
    }
}

1 0

dp_i = dp_i_1 + dp_i_2

if get dp_i => do right shift value to

so

dp_i_2 = dp_i_1;

dp_i_1 = dp_i;

所以最後結果會在 dp_i_1 上, 因為最後 dp_i 給了 dp_i_1

T: O(n)

S: O(1)

請畫圖

Last updated

Was this helpful?