Dynamic Programming Pattern Leetcode 1508