其實算法就這麼點東西

學習算法的一些建議


若是想正兒八經的學習算法,首先給出 3 條建議:php

  • 對基礎算法進行系統學習,所有手敲一遍(推薦書籍:算法四)
  • 系統進行刷題,100 道題入門,200 道題拔高,300 道題拿 offer。
  • 找到合適的學習夥伴,多和別人討論,造成本身的思惟。公衆號內可回覆:進羣,加入刷題羣

    一、基礎數據結構和算法


  • 鏈表git

    • 單鏈表
    • 雙鏈表
    • 循環鏈表
  • 哈希表程序員

    • 散列函數
    • 碰撞解決(衝突解決)
  • 字符串github

    • 哈夫曼壓縮算法
    • LZW 壓縮
    • 匹配原理(多路徑匹配)
    • 狀態機
    • BF(暴風算法)
    • KMP(看毛片算法)
    • Sunday(這個很重要)
    • 排序
    • 查找
    • 正則表達式
    • 數據壓縮
  • 面試

    • 二叉樹
    • 最優二叉樹(赫夫曼樹))
    • 二叉查找樹(BST)
    • 伸展樹(splay tree 分裂樹)
    • 平衡二叉樹 AVL
    • 紅黑樹
    • B 樹,B+,B*
    • R 樹
    • Trie 樹(前綴樹)
    • 後綴樹
    • 二叉堆 (大根堆,小根堆)
    • 二項樹
    • 二項堆
  • 圖的算法正則表達式

    • 圖的存儲
    • 基本操做(創建,遍歷,刪除節點,添加節點)
    • 最小生成樹
    • 拓撲排序
    • 關鍵路徑
    • 最短路徑: Floyd,Dijkstra,bellman-ford,spfa
  • 排序算法

    • 交換排序(包括 快速排序)
    • 插入排序(包括 希爾排序)
    • 選擇排序(包括 堆排序)
    • 歸併排序
    • 桶排序
  • 查找編程

    • 順序表查找:順序查找
    • 有序表查找:二分查找
    • 塊內有序:經過二分定位到塊,再進行查找。
    • 動態查找: 二叉排序樹,AVL 樹,B- ,B+(在查找的過程當中動態生成表結構)
    • 哈希表:O(1)

      二、面試常考數據結構和算法


  • DP (動態規劃) 大廠必問
  • KMP 校招
  • 快速排序 校招
  • BFS/DFS (廣度/深度優先遍歷)重要
  • 紅黑樹 (一種自平衡的二叉查找樹)校招
  • Dijkstra:最短路徑算法 校招
  • LRU 社招

    三、算法設計思想


  • 窮舉搜索法 (暴力破解法,對可能的解的衆多候選按照某種順序逐一枚舉和檢驗)
  • 遞歸法 (斐波那契數列、快排都是典型的遞歸應用。關鍵點在於肯定遞歸公式和肯定邊界條件)
  • 動態規劃 (將複雜的問題分解成一系列的子問題;DP 一般基於一個遞推公式及一個(或多個)初始狀態,當前子問題解由上一次子問題解推出)
  • 貪心算法 (找到第一個合乎心意的解法,典型題目:硬幣找零問題)
  • 回溯 (探針法,找不到問題答案就向回走。典型題目:八皇后問題)
  • 分治算法(將一個難以直接解決的大問題,分割成一些規模較小的相同問題,各個擊破,分而治之。分治算法經常使用遞歸實現)

    四、書目推薦


  • 刷題
    • Leetcode 前 200 道題 (初學者建議)
    • 劍指 offer (牛客網能夠直接練習)
    • 程序員代碼面試指南(中級讀者)
  • 思惟提升
    • 算法謎題
    • 編程之美 (從另外一個角度學習算法)
  • 基礎
    • 算法四 (排序,查找,圖,字符串四章值得精讀)
    • 編程珠璣
  • 算法設計
    • 算法引論(從創造算法的角度思考問題)
    • 算法導論(算法字典)

      五、編程網站



以筆試爲目的的修煉都是耍流氓。但也許,咱們就想當個好流氓。秋招已到,但願你們都能收貨滿意的offer。數據結構


我把我寫的全部題解整理成了一本電子書放在了 github 上,三天內衝擊到 github 排行榜榜首!近 5w 人下載閱讀!要獲取的話,直接進入下方連接就能夠了(記得給我點個 star):數據結構和算法

https://github.com/geekxh/hello-algorithm

其實算法就這麼點東西

相關文章
相關標籤/搜索