枚舉算法的優化套路
最近接觸了一門《ACM算法入門基礎》的課程,個人感覺挺不錯的,所以特地整理了一下,和大家分享一下。
希望能夠給算法入門的小伙伴帶來一點點幫助,水平不高,如果有錯誤或不足的地方,望見諒!
持續學習更新中~
枚舉的要點:
- 確定需要枚舉的變量
- 確定枚舉的范圍
- 優化手段
- 改變/減少枚舉變量
- 縮小枚舉范圍
- 二分 :二分查找、二分搜索非常有效,一般是復雜度從O(N)降到O(logN),使用范圍也很廣
- 哈希:Hash,空間換時間
- 雙指針:Leetcode上對應的分類是two pointer,直譯過來就是雙指針,大概的思想就是滑動窗口
- 前綴、后綴和:空間換時間
相關例題的優化分析:
- 改變枚舉的變量
- 哈希
- 雙指針
- hihoCoder 1745題 “最大順子”
- hihoCoder 1514題 “偶像的條件”
- hihoCoder 1607題 “H行人的社交網絡”
- 前綴和
- 藍橋杯 —— K倍區間
- 2017 美團校招筆試題 “K的倍數”
- 2017 微軟筆試題 “數組拆分”