Climbing Staircase

Problem

You are climbing a staircase. It takes n steps to reach the top.

Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?

Example 1:

Input: n = 2
Output: 2
Explanation: There are two ways to climb to the top.

1. 1 step + 1 step
2. 2 steps

Example 2:

Input: n = 3
Output: 3
Explanation: There are three ways to climb to the top.

1. 1 step + 1 step + 1 step
2. 1 step + 2 steps
3. 2 steps + 1 step

Constraints:

  • 1 <= n <= 45

Solution

I remember doing this problem during undergrad/when studying for my AWS internship interviews. I remember the solution being pretty simple after discovering it. I know that it involves dynamic programming (this problem is in the DP category after all).

class Solution {
    public int climbStairs(int n) {
        return climbStairs(n, new HashMap<>());
    }

    public int climbStairs(int n, Map<Integer, Integer> m) {
        if (n < 3) {
            return n;
        }
        if (!m.containsKey(n)) {
            m.put(n, climbStairs(n - 1, m) + climbStairs(n - 2, m));
        }

        return m.get(n);
    }
}

Recent posts from blogs that I like

Ohioan woman painter in Paris: Elizabeth Nourse, 2

Paintings of real, often poor, people in the Netherlands, the extreme west cost of Brittany, and foothills of the mountains. She also remained in Paris to help there during the First World War.

via The Eclectic Light Company

Dot product: Component vs. Geometric definition

The goal of this post is to answer a simple question: why are the following two definitions of the vector dot product in Euclidean space [1] equivalent for vectors \vec{a} and \vec{b}: Component definition: \vec{a}\cdot\vec{b}=\sum_{i=1}^{n}a_i b_i Geometric definition: \vec{a}\cdot\vec{b}=|\vec{a}|...

via Eli Bendersky

In defense of not understanding your codebase

As a software engineer, how well do you have to understand your own codebase?

My guess is that people who work on small codebases with low-turnover teams (say, Redis or games like The Witness) would say “obviously you have to understand it completely, otherwise you can’t do good work”. I’d also gues...

via Sean Goedecke