← Dynamic Programming

Climbing Stairs

Easy
Python
def climb_stairs(n):
    if n<=2: return n
    a,b=1,2
    for _ in range(3,n+1): a,b=b,a+b
    return b
Java
public int climbStairs(int n){
    if(n<=2) return n;
    int a=1,b=2;
    for(int i=3;i<=n;i++){int t=a+b;a=b;b=t;}
    return b;
}

Key Insight

Simultaneous assignment avoids temp. Java needs temp variable.

Python → Java Differences

  • Simultaneous swap vs temp
  • _ for unused variable
  • Fibonacci-like identical
Python
def climb_stairs(n):
    if n<=2: return n
    a,b=1,2
    for _ in range(3,n+1): a,b=b,a+b
    return b
Java
public int climbStairs(int n){
    if(n<=2) return n;
    int a=1,b=2;
    for(int i=3;i<=n;i++){int t=a+b;a=b;b=t;}
    return b;
}

Algorithm Steps

1. Base n<=2
2. Roll two variables