科技

那些年,我們被問到的資料結構

在面試的時候經常會被問到關於資料結構中的概念以及演算法實現。既然要成為一名程式設計師,那麼掌握資料結構也是無可厚非的,畢竟有著很多的應用與實現。所以自己就整理了一些關於資料結構應該掌握的概念和演算法,以及面試常問的問題(實現語言用的Java),有些演算法可能手寫不出,但思路一定要會,自己也是菜鳥一枚,也在學習。

線性表

線性表的相關概念,對於其中的連結串列,棧,佇列,後面展開介紹。

棧和隊

棧的建立佇列的建立兩個棧實現一個佇列兩個佇列實現一個棧設計含最小函式min()的棧,要求min、push、pop、的時間複雜度都是O(1)判斷棧的push和pop序列是否一致

連結串列

單鏈表的建立和遍歷求單鏈表中節點的個數查詢單鏈表中的倒數第k個結點(劍指offer,題15)查詢單鏈表中的中間結點合併兩個有序的單鏈表,合併之後的連結串列依然有序【出現頻率高】(劍指offer,題17)單鏈表的反轉【出現頻率最高】(劍指offer,題16)從尾到頭列印單鏈表(劍指offer,題5)判斷單鏈表是否有環取出有環連結串列中,環的長度單鏈表中,取出環的起始點(劍指offer,題56)。本題需利用上面的第8題和第9題。判斷兩個單鏈表相交的第一個交點(劍指offer,題37)

排序

1.氣泡排序

2.插入排序

3.選擇排序

4.希爾排序

5.快速排序

6.歸併排序

7.堆排序

二叉查詢樹樹的深度遍歷與廣度遍歷平衡樹紅黑樹哈夫曼樹並查集B樹系列

圖的基礎概念深度遍歷與廣度遍歷單源最短路徑多源最短路徑最小生成樹拓撲排序

雜湊查詢

1.散列表的概念

2.散列表的一些演算法應用

散列表可以和Java中集合HashMap等對照學習。

推薦書籍:《大話資料結構》

自己是從事了七年開發的Android工程師,不少人私下問我,2019年Android進階該怎麼學,方法有沒有?

沒錯,年初我花了一個多月的時間整理出來的學習資料,希望能幫助那些想進階提升Android開發,卻又不知道怎麼進階學習的朋友。【包括高階UI、效能優化、架構師課程、NDK、Kotlin、混合式開發(ReactNative+Weex)、Flutter等架構技術資料】,希望能幫助到您面試前的複習且找到一個好的工作,也節省大家在網上搜索資料的時間來學習。

資料獲取方式:轉發+關注後私信回覆【面試】免費獲取Android進階開發和麵試資料!!!

資料大全

Reference:科技日報

看更多!請加入我們的粉絲團

轉載請附文章網址

不可錯過的話題