环境准备
力扣
- https://leetcode-cn.com/
-
Mac
iTerm2+zsh(oh-my-zsh)
- 键盘设置
VSCode
- https://vscodethemes.com/
- LeetCode Plugin
- Java Plugin(IDEA)
-
CodeStyle
Google Code Style
自顶向下编程方式
使用Big O notation进行标记
- O(1) 常数复杂度 ConstantComplexity
- O(log n) 对数复杂度 LogarithmicComplexity
- O(n) 线性复杂度 LinearComplexity
- O(n log n) 线性对数复杂度 LinearLogarithmicComplexity
- O(n^2) 平方复杂度 SquareComplexity
- O(n^3) 立方复杂度 CubicComplexity
- O(2^n) 指数增长复杂度 ExponentialGrowthComplexity
- O(n!) 阶乘复杂度 FactorialComplexity
- 通常只看最高复杂度的运算,忽略前面的常数系数
- 时间复杂度在n比较小时,算法复杂度相差不大,当n增大时,差距明显拉开
- 主定理 master theorem
- 二分查找,每次都执行一半的查找,复杂度O(log n)
- 二叉树遍历,每个节点都访问且只访问一次,复杂度O(n)
- 排好序的二维矩阵查找,复杂度O(n)
- 归并排序,复杂度O(n log n)