19日onsite
第一轮:消消乐的消除算法,讨论了算法。实现的时候只需要实现怎判断横竖对角线有超过5个连续的就可以了,返回true|false。
第二轮:给你一个sorted array, 返回每个数字平方后依然sorted array,比如[-2,1,3,4],返回[1,4,9,16]. 要求O(n) 复杂度。 followup是在保证O(n)复杂度的情况下,怎么用constant space实现。
第三轮:给你两个字符串3a1b3c, 2a1a1b2c1d。怎么判断他们在expand以后是代表同一个字符串。要求O(n), constant space.
Followup: 给你3a1b3c3d2a, 这样的字符串和一个n,把这个字符串填入宽度为n的board,从左到右,比如说是4,就是长下面这样子。
a a a b
c c c d
d d a a
然后如果从右往左读,应该返回1b3a1d3d2a2d。这个board不一定需要填,只是为了表达这个题目,就是给你一个string,返回后面一个string这样。
第四轮:有个用户的类,用户每听一次歌,就会调用listen(song)这样的接口。还有一个接口是返回这个用户听的topN的歌手。followup是如果要返回topN in a week 怎么做。
第五轮:第一题,给你一个board,每个cell上面都有数字,代表访问这个cell需要的cost,也给你了从cell走到cell的边的cost。然后你在最上面,求问到最下面这一行的最小cost。走的规则是每一个cell,只能走到下面一行的任何一个cell,不能向上和横向走, 比如第2行第1列的cell,可以走到第三行第1列,第2列,第3列。。。如果输入参数没有第2行第1列到第3行第x列的数据,那说明这条边是不可达的。
第二题,给你一堆点,求由这堆点组成的最小矩形的面积。矩形长宽必须是平行于坐标轴的,没有斜的那种。