第02课 | 训练准备和复杂度分析
训练环境设置、编码技巧和 Code Style
工欲善其事,必先利其器!!!
电脑设置
-
Google
-
Mac: iTerm2 + zsh (oh my zsh)
Windows: Microsoft new terminal: (https://github.com/microsoft/terminal)
-
VSCode; Java: IntelliJ; Python: Pycharm
-
LeetCode plugin (VSCode & IntelliJ)
Code Style
Java、Python、...
• Google code style
• Airbnb
指法和小操作
• home, end(行头、行尾)
• Word 单词、选单词、选整⾏
• IDE 的自动补全
• Top tips for <IDE-name>
时间复杂度、空间复杂度
Big O notation
O(1): Constant Complexity 常数复杂度
O(log n): Logarithmic Complexity 对数复杂度
O(n): Linear Complexity 线性时间复杂度
O(n^2): N square Complexity 平⽅
O(n^3): N square Complexity ⽴方
O(2^n): Exponential Growth 指数
O(n!): Factorial 阶乘
注意:只看最高复杂度的运算
时间复杂度曲线:

示例:
Fib: 0, 1, 1, 2, 3, 5, 8, 13, 21, ...
• F(n) = F(n - 1) + F(n - 2)
• 面试 (直接用递归)
int fib(int n) {
if (n <= 2) return n;
return fib(n - 1) + fib(n - 2);
}
Master Theorem:

思考题:
二叉树遍历 - 前序、中序、后序:O(N)
图的遍历:O(N)
搜索算法:DFS、BFS - O(N)
二分查找:O(logN)
小结
• 常⽤工具配置
• 基本功和编程指法
• 常见的时间、空间复杂度
浙公网安备 33010602011771号