Dynamic Programming Pattern Leetcode 150