eric programming leetcode 658