Hardest Leetcode Problem 9