Dynamic Programming Pattern Leetcode 1501