Google interview question

A difficult question (LeetCode Hard) that involved dynamic programming with memoization.