2014-05-13 17:10:46 +08:00
|
|
|
|
2015-11-28 14:26:36 +08:00
|
|
|
这部分内容是算法问题合集,题目大多来自网络和书籍。我做了下简单的整理,很多题做了一些思路标记。
|
2014-05-13 17:10:46 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
### 字符串
|
|
|
|
|
|
|
|
|
|
计算机处理的数据除了数值,就是字符。字符处理的常见问题包括:
|
|
|
|
|
|
2015-11-28 21:40:11 +08:00
|
|
|
* 单词反转
|
|
|
|
|
* 回文判断
|
|
|
|
|
* 字符串的压缩
|
|
|
|
|
* 字符串的排列和组合
|
|
|
|
|
* 字符串比较
|
|
|
|
|
* 子串
|
2014-05-13 17:10:46 +08:00
|
|
|
|
2015-11-28 21:40:11 +08:00
|
|
|
|
2015-11-28 14:26:36 +08:00
|
|
|
|
|
|
|
|
### 链表
|
|
|
|
|
|
2015-11-28 21:40:11 +08:00
|
|
|
链表处理的常见问题包括:
|
|
|
|
|
|
2015-11-28 21:12:00 +08:00
|
|
|
* 链表反转
|
|
|
|
|
* 链表中是否有环
|
|
|
|
|
* 删除链表中的p节点,在p节点前面插入节点q, 要求O(1)复杂度
|
|
|
|
|
* 2个链表相交
|
|
|
|
|
* 2个链表合并
|
|
|
|
|
|
2015-11-28 14:26:36 +08:00
|
|
|
|
2015-11-28 21:45:54 +08:00
|
|
|
### 栈和队列
|
2015-11-28 14:26:36 +08:00
|
|
|
|
2015-11-28 21:45:54 +08:00
|
|
|
这是最基本数据结构,相对容易理解。
|
2015-11-28 14:26:36 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-11-28 21:12:00 +08:00
|
|
|
### 数值问题
|
2014-05-13 17:10:46 +08:00
|
|
|
|
2015-11-28 21:40:11 +08:00
|
|
|
这部分都是一些数学几何计算方面的问题。 主要有:
|
2014-05-13 17:10:46 +08:00
|
|
|
|
2015-11-28 21:40:11 +08:00
|
|
|
* 位运算
|
|
|
|
|
* 随机数
|
|
|
|
|
* 大数问题
|
2014-05-13 17:10:46 +08:00
|
|
|
|
|
|
|
|
|
2015-11-28 21:12:00 +08:00
|
|
|
### 数组数列问题
|
|
|
|
|
|
|
|
|
|
|
2015-11-28 21:40:11 +08:00
|
|
|
这部分的问题都集中在数据集合上。主要有:
|
|
|
|
|
|
|
|
|
|
* 数组排序
|
|
|
|
|
* top-k
|
|
|
|
|
* 子数组
|
|
|
|
|
* 多个数组合并,交集
|
|
|
|
|
|
2015-11-28 21:12:00 +08:00
|
|
|
|
|
|
|
|
### 矩阵
|
|
|
|
|
|
2015-11-28 21:40:11 +08:00
|
|
|
这部分都是矩阵和二维数组相关的问题。
|
2015-11-28 21:12:00 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
### 二叉树
|
2014-05-13 17:10:46 +08:00
|
|
|
|
|
|
|
|
|
2015-11-28 21:40:11 +08:00
|
|
|
* 遍历
|
|
|
|
|
* 翻转
|
|
|
|
|
* 子树
|
|
|
|
|
|
2014-05-15 18:54:16 +08:00
|
|
|
|
|
|
|
|
|
2014-05-13 17:10:46 +08:00
|
|
|
### 图
|
|
|
|
|
|
2015-11-28 21:45:54 +08:00
|
|
|
图相关的问题
|
2014-05-13 17:10:46 +08:00
|
|
|
|
2014-05-15 18:54:16 +08:00
|
|
|
|
2014-05-13 17:10:46 +08:00
|
|
|
### 海量数据处理
|
|
|
|
|
|
|
|
|
|
|
2015-11-28 21:12:00 +08:00
|
|
|
海量处理问题常用的分析解决问题的思路是:
|
|
|
|
|
|
2015-12-11 19:27:48 +08:00
|
|
|
* Hash映射/分而治之
|
|
|
|
|
* Bitmap
|
|
|
|
|
* Bloom filter(布隆过滤器)
|
|
|
|
|
* Trie树
|
|
|
|
|
* 数据库索引
|
|
|
|
|
* 倒排索引(Inverted Index)
|
2015-11-28 21:45:54 +08:00
|
|
|
* 双层桶划分
|
|
|
|
|
* 外排序
|
2015-12-11 19:27:48 +08:00
|
|
|
* simhash算法
|
|
|
|
|
* 分布处理之Mapreduce
|
2015-11-28 21:12:00 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
### 智力思维训练
|
|
|
|
|
|
2014-05-13 17:10:46 +08:00
|
|
|
|
|
|
|
|
|
2015-11-28 14:42:38 +08:00
|
|
|
###【剑指offer】
|
2015-11-28 14:26:36 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
《剑指offer》里面给出了50到高质量的算法问题,很有学习的必要。
|
|
|
|
|
|
|
|
|
|
|
2015-11-28 14:42:38 +08:00
|
|
|
###【编程之美】
|
2015-11-28 14:26:36 +08:00
|
|
|
|
|
|
|
|
|
2014-05-13 17:10:46 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|