Recent 20 problem of Google

1.给字符串求频率最高字符。字符串大咋办,多核咋办。

a. brute-force. 对每个字符依次遍历 O(n^n).

b. hashtable. hashtable内保存频率。遍历完字符串再遍历hashtable. 

c. 还是hashtable, 但是可以对hashtable做堆处理,使得hashtable时刻都是一个Maxheap


2.俩数组交集。有序或无序。

a. 二路归并

b. hashtable: 分别hash两个字符串 (无序有序都可)

c. 遍历小的,然后在大的里面做二分查找 (必须有序)

d. 位图,利用两个二进制数组表示两个字符串,然后并运算就可以了。

3.实现cache.

a. 用 HashMap 来存储和用来做 CacheKey 查找。

    用一个LinkedList来存储访问顺序列表
    用一个LinkedList来存储添加时间顺序列表,即过期时间。
    HashMap 中 Key 为 CacheKey, Value 包装成一个CacheObject
    CacheObject 包含:
1) object size
2) 指向 Access List 节点的指针
3) 指向 Age List 节点的指针


    其中两个List的作用
1) AccessList
当添加新元素且 List 满时,删除列表最后的元素,即最长时间没有访问的元素。
2) AgeList
当调用 get cache 时候,判断 List 末尾有无过期元素,如有向前一直删除到最后一个没有过期的元素为 止。


4.给字符串,里边是几个单词中间没空格,输出所有可能的句子。比如“好运气”,输
出好空格运气。

5.数据流统计最近一个小时流量。

6.写程序找最大convex多边形。

7.复制无loop的有向图。

8.给字符串找最短一段出现过abc。

9.给一段内存,怎么设计malloc和free.

10.设计密码产生器,不能是字典里单词。

11.矩阵有障碍物找路径。

12。给一堆区间找有没有交集。

13. 有序数组找给定sum.

14. 实现hashtable.

15. 猜数字的,找使得最坏情况下猜的数字和最小的策略。

16。一管子硬币AB都只能从两边取求A最大值那个。

17. a[10] 和 malloc出来的区别

18. BT 俩节点最低祖先。

19. 给出生证明,求俩人最近的相同祖先。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值