其他内容
需要了解并实现的特殊解法:
Morris 遍历
Floyd's Cycle Detection Algorithm(快慢指针)
Boyer–Moore 投票
轮转算法
快速幂
洗牌算法
特殊二分查找
快速选择
判断质数
最近公共祖先
最大公约数
数学与排列组合
拓扑排序
Dijkstra 算法
Bellman–Ford 算法
只需要了解的特殊解法
牛顿迭代法,KMP 算法,Prim 算法,Floyd-Warshall 算法
需要记下来的代码模版
二分查找 lower_bound, upper_bound,前缀树,前缀和,滑动窗口(找最长以及最短),单调栈,回溯,BFS,DFS,拓扑排序,Union Find,滚动哈希,快速选择算法
API 对比
以下为三种常见的编程语言 API 的对比表格,希望可以帮助你理解其他人的代码。
| Java | Python | C++ |
|---|---|---|
ArrayList
| List
| vector
|
LinkedList
| None | list
|
Stack
| Stack
| stack
|
Queue
| deque
| queue
|
PriorityQueue
| heap
| priority_queue
|
HashSet
| Set
| unordered_set
|
HashMap
| Dictionaries
| unordered_map
|
TreeMap
| None | map
|
binarySearch
| bisect
| binary_search
|
String
| string
| string
|
运算符优先级
基本规则
- 一元运算符优于二元运算符
- 乘除加减优于大部分运算符
- 位运算优于逻辑运算
Java
| 类别 | 列表 |
|---|---|
| 括号 | () |
| 前后缀与一元运算符 | ++, --, !, ~, +, - |
| 乘除加减 | *, /, +, - |
| 位移 | >>, << |
| 判断与比较 | >, >=, <, <=, ==, |
| 位运算 | &, ^, |, &&, || |
| 逻辑运算 | &&, || |
| 三元运算符 | ? : |
| 赋值 | =, +=, -=, ^=, >>= |
Python
| 类别 | 列表 |
|---|---|
| 括号 | () |
| 阶乘 | ** |
| 前后缀与一元运算符 | ++, --, !, ~, +, - |
| 乘除加减 | *, /, +, - |
| 位移 | >>, << |
| 位运算 | &, ^, |, &&, || |
| 判断与比较 | >, >=, <, <=, ==, |
| 逻辑运算 | &&, || |
| 赋值 | =, +=, -=, ^=, >>= |
C++
C++ built-in operators, precedence, and associativity
| 类别 | 列表 |
|---|---|
| 括号 | () |
| 前后缀与一元运算符 | ++, --, !, ~, +, - |
| 乘除加减 | *, /, +, - |
| 位移 | >>, << |
| 判断与比较 | >, >=, <, <=, ==, |
| 位运算 | &, ^, |, &&, || |
| 逻辑运算 | &&, || |
| 赋值 | =, +=, -=, ^=, >>= |
瓶颈期
以下为常见的瓶颈期以及解决方法
| 瓶颈期 | 原因 | 解决方法 | 目标 |
|---|---|---|---|
| 不理解题目 |
|
| 五分钟内能够理解题目含义 |
| 不理解题解 |
|
| 能够理解大部分官方题解 |
| 做过的题目无法 AC |
|
| 做过的题目基本能够做出来 |
| 不知道题目是什么类型 |
|
| 能够判断题目大概是什么类型 |
| 有思路,但是写不对 |
|
| 代码能够正确实现脑海中的思路 |
| 不记得具体的库以及 API |
|
| 正确写出具体库以及 API |