programming exercises for leetcode, acm, interview, etc.