Fibonacci-style iteration. Keep only two previous values.
def climbStairs(n): if n <= 2: return n prev2, prev1 = 1, 2 for i in range(3, n + 1): curr = prev1 + prev2 prev2 = prev1 prev1 = curr return prev1
time, space.
##### ###### ##### ### # # ### # # ###### ## ## ## ## ## ## ## # # # # # ## ##### #### ##### # # # # # # # #### ## # ## ## ## ## # # # # # ## ## # ###### ## ### # ### # ######
##### ###### ##### ### # # ### # # ###### ## ## ## ## ## ## ## # # # # # ## ##### #### ##### # # # # # # # #### ## # ## ## ## ## # # # # # ## ## # ###### ## ### # ### # ######
The approach
Fibonacci-style iteration. Keep only two previous values.
def climbStairs(n): if n <= 2: return n prev2, prev1 = 1, 2 for i in range(3, n + 1): curr = prev1 + prev2 prev2 = prev1 prev1 = curr return prev1
time, space.