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