http://oj.leetcode.com/ solution