Lyf凤

靡不有初,鲜克有终

扩大
缩小

第02课 | 训练准备和复杂度分析

训练环境设置、编码技巧和 Code Style

工欲善其事,必先利其器!!!

 

电脑设置

Code Style

Java、Python、...

• Google code style

• Facebook

• Airbnb


LeetCode

leetcode-cn.com 和 题解

leetcode.com 和 Discuss board

 

指法和小操作 

• 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) 

 

小结

• 常⽤工具配置

• 基本功和编程指法

• 常见的时间、空间复杂度

  

posted on 2020-04-22 16:32  Lyf凤  阅读(242)  评论(0)    收藏  举报

导航

levels of contents