Quora挂经

4道题70分钟
准备的时候看到之前地里帖子有说Quora实习招满了,OA过了也会取消电面,于是就没准备没看面经自己随便做了,结果当然是挂了

  1. reverseDigitsInPairs
  2. prefixStrings
  3. sortMatrixByOccurrences
  4. subarraysCountBySum

以下思路均为python思路!
第一题给你一个int,return两两reverse,ex:12345,return:21435
简单题,换成string后两两反过来放进一个list里,奇数个记得把最后一个单独放进去,然后return int(’’.join(list))

第二题两个list,问你第二个list里是否全能用第一个list里的string组合出来,组合为按顺序组合
简单题,对第二个list每一个element,s = “”,如果s跟element不一样就从第一个list里挨个加到s然后继续比,第一个list用完还不一样就false,第二个list遍历完就true

第三题给你个方matrix,按出现次数sort,次数一样按大小sort,然后斜线填到方matrix里
用了个dict记录出现次数,然后从dict里根据条件挨个找出来放进一个list里最后往matrix里填。时间紧没细想,简单粗暴,可惜最后往matrix里填的时候出了点问题,没解出来,diagnol填是真的烦

第四题给你个list,int k,int s,问你list中有几个连续的subarray长度小于k,sum等于s
感觉能dp?反正我直接brutal force了,长度从1到k挨个list过一遍。即使我的brutal force能优化的地方都有不少,比如每算sum往前走的时候不用重新算,减之前加之后就行等等。
注意我的brutal force隐藏test case过不了,应该是刻意有检测time complexity的,不过300分拿了120

70分钟感觉挺紧的,不过有道理。感觉做题熟练的话前两题easy5分钟,后两题medium30分钟,刚刚好。
可惜我第二题审题有误,本来5min绝对轻轻松松的题用了20分钟。。。不然的话第三题matrix填写bug修了应该能过threshold。

第四道题,应该是presum+fixed size sliding window + hashmap.

时空复杂度都为线性的。

先把presum数组算出来。然后长度为k的sliding window,从左到右one pass。过程中hashmap记录每种sum出现的次数。滑动窗口平移时,右边去加hashmap,左边去减hashmap。