data structure | algorithm |
---|---|
Array | General Coding |
Stack / Queue | In-order/Pre-order/Post-order traverSal |
PriorityQueue (heap) | Greedy |
LinkedList (single / double) | Recursion / Backtrace |
Tree / Binary Tree | Breadth-first search |
Binary Search Tree | Depth-first search |
Hash Table | Divide and Conquer |
Disjoint Set | Dynamic Programming |
Trie | Binary Search |
BloomFilter | Graph |
LRU Cache |
时间复杂度\空间复杂度
- O(1): 常数复杂度
- O(log n): 对数复杂度
- O(n): 线性时间复杂度
- O(n^2): 平方
- O(n^3): 立方
- O(2^n): 指数
- O(n!): 阶乘
O(1)
var i int = 100
fmt.Println(i)
O(log n)
for i := 0; i < n; i = i * 2 {
fmt.Println(i)
}
O(n)
for i := 0; i < n; i++ {
fmt.Println(i)
}
O(n^2)
for i := 0; i < n; i++ {
for j := 0; j < n; j++ {
fmt.Println(i)
}
}
O(k^n)
for i := 0; i < math.Pow(2, n); i++ {
fmt.Println(i)
}
O(n!)
for i := 0; i < factorial(n); i++ {
fmt.Println(i)
}