Leetcode Solution Python Hard