11/13 完成了google onsite interview
1.国人:
a.输入常数N, 生成1 - 2 ^ N, 然后头尾两两合并,直到最后只有一个数组,暴力解就可以了
b.find the only one peek in integer array, 答: binary search
2.印度人: List Of String, find out the first pair with common unique characters (ABCCC和CAB就满足条件,应为他们都有ABC)
答: One for loop + HashMap<String, Integer>, 每进来一个word单独处理一下就好了
印度人曰: HashMap 太浪费空间了,提升一下
答: 不要任何数据结构了, two for loop生比吧
印度人曰: 太浪费时间了,中和一下吧
答: 用个set吧,只要set里面有了,就跳出loop,和前面的比一下,找到了就返回, 时间是linear的
印度人曰: what are you talking about , I didnt get?
心理答: f*** off, stupid
印度人曰: 再提升一下效率
答: 还是生比, 用一个int[256]把以处理完的存起来
时间到,没空写fellow up的代码了
3.国人: Predict Search Term - Trie problem, 返回List, 要求用线性的时间完成, 类似于leetcode Word Search 2
fellow up: time/space complexity analysis
fellow up: 每个单词有权重,权重大的在前面
fellow up: 尽可能减少排序的时间,答: 建树的时候每个节点放一个PriorityQueue
fellow up: 如果权重可以更新的话,怎样用logN的时间完成,答: 实现自定义的priorityQueue, 可以randomAccess任意节点
4.ABC小哥: LeetCode 399
fellow up: 如何只用线性的空间复杂度,而时间复杂度任然是constant: 答: 所有的点连到一个中心点上,这个点相当于一个transit, 和压缩过路径的union find有点像
面试官都挺和善的,印度人那一轮答得不是很好,感觉他心理有一个预设的方案,不是他那个就一定不行,fellow up答的不好。感觉fellow up挺重要的,代码写的太快,面试官为了hold住面试就必须要一直想fellow up, 这样反倒给自己挖了坑, 希望能集一点人品吧