必须达到能手写下列问题对应代码的程度:
- 在链表这一节:
- 单链表反转;
- 链表中环的检测;
- 两个有序的链表合并;
- 删除链表倒数第n个结点;
- 求链表的中间结点等。
- 在栈这一节:
- 在函数调用中的应用;
- 在表达式求值中的应用;
- 在括号匹配中的应用。
- 在排序这一节:
- 如何在O(n)的时间复杂度内查找一个无序数组中的第 K大元素?
- 在二分查找这一节,
- 二分查找的四个变体。
对于海量数据的处理思路问题
- 比如说,我们有10GB的订单数据,我们希望按订单金额(假设金额都是正整数)进行排序,但是我们的内存有限,只有几百MB,没办法一次性 把10GB的数据都加载到内存中。这个时候该怎么办呢?
- 如果你所在的省有50万考生,如何通过成绩快速排序得出名次呢?
- 假设我们有10万个手机号码,希望将这10万个手机号码从小到大排序,你有什么比较快速的排序方法呢?
- 假设我们有1000万个整型数据,每个数据占8个字节,如何设计数据结构和算法,快速判断某个整数是否出现在这1000万数据中?
- 我们希望这个功能不 要占用太多的内存空间,最多不要超过100MB,你会怎么做呢?
工业实践部分
- 老师解析了Glibc中的qsort() 函数;
- Java中的HashMap如何实现工业级的散列表;
- Redis中的有序集合(Sorted Set)的实现,工程上使用的红黑树等等。
- 尤其是对于哈希算法,老师解析了安全加密、数据校验、唯一标识、散列函数,负载均衡、数据分片、分布式存储等应用。