leetcode639 hard