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

算法图.png

时间复杂度\空间复杂度

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