LeetCode 是一个非常棒的 OJ(Online Judge)平台,收录了许多互联网公司的算法题目,被称为刷题神器。
Leetcode有如下几个优点
- 题目全部来自业内大公司的真实面试
- 不用处理输入输出,精力全放在解决具体的问题上
- 题目有丰富的讨论,可以参考别人的思路
- 精确了解自己代码在所有提交代码中运行效率的排名
- 支持多种主流语言:C/C++、Python、Java
- 可以在线进行测试,方便调试
算法和数据结构是面试考察的重中之重,也是大家刷题时需要着重训练的部分。Leetcode 涉及的算法和数据结构,大约有以下内容
算法 Algorithms
- 基础技巧:分治、倍增、二分、贪心
- 排序算法:快速排序、归并排序、计数排序
- 搜索算法:回溯、递归、剪枝技巧,深度优先遍历,广度优先遍历,二叉搜索树等
- 图论:最短路径、最小生成树
- 动态规划:背包问题、最长子序列
数据结构 Data Structures
- 数组与链表:单 / 双向链表、跳舞链
- 栈与队列
- 哈希表
- 堆:最大堆 / 最小堆
- 树与图:最近公共祖先、并查集
- 字符串:前缀树(字典树) / 后缀树