LiveRamp OA面经

原帖地址:一亩三分地

昨天晚上12点才想起来有个LiveRamp的OA没做,然后做完今天中午HR就约了电面,效率确实快,只可惜这家不怎么招人好像,发个OA攒攒人品吧。
一共两道编程题,150分钟,可以使用的语言很多。
1.一个sequence,里面都是整数,求最长的subsequence的长度,使得这个subsquence的最大值和最小值相差不超过1. 比如[1,3,2,2,5,2,3,7]最长的subsequence是[3,2,2,2,3],所以应该返回5. 其实挺简单的一道题,开始我以为subsequence要求连续,就用dp做,run了一下结果不对,发现subsequence可以是不连续的,这样的话只需要用一个hashtable统计一下各个整数的个数,所以最长的长度应该就是count[k]+count[k+1]的最大值,k是这个sequence里的某一个数,count[k]是它出现的次数。另外一个思路就是排序,这样空间复杂度小点,但是时间复杂度要高一些。
2.一个图,节点表示城市,有M个节点和M-1条边,所以是没有环的,用一个array表示这个图,比如T[x]=y的话那么节点x就和y相连,如果T[x]=x就说明x是首都。现在要分别求出到首都距离为1,2,3…M-1的节点数。
这题我用一个hashmap重新建了一个图,这样方便查找所有相邻的节点,而不用每次查找整个array。然后用bfs来求每个距离上的节点数。

补充内容 (2015-7-9 16:37):
说错了,是90分钟