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