Leetcode 5 Dynamic Programming