-
1 # java教父
-
2 # hiahia0715
首先強調一點,資料結構和演算法其實和語言沒有太大關係,程式語言只是我們實現演算法的工具。這裡我為你整理了一份常見的你可以嘗試去實現的演算法清單:
連結串列類題目:
2. 連結串列反轉
3. 旋轉單鏈表
4. 查到倒數第K個連結串列節點
5. 求連結串列的中間節點
6. 劃分連結串列使得所有小於x的節點排在大於等於x的節點之前
7. 合併有序連結串列
9. 判斷單鏈表是否有環(快慢指標)
10. 判斷兩個無環連結串列是否相交
排序演算法:
1. 快速排序
2. 插入排序演算法
3.選擇排序
4.堆排序
5.希爾排序
6.基數排序
7.氣泡排序
8.歸併排序
9.二叉樹排序
10.計數排序
11.桶排序
二叉樹:
1. 計算二叉樹節點個數
2. 求樹的最大層數(深度)
3. 最小深度
4. 二叉樹的前序遍歷(遞迴演算法)
5. 二叉樹非遞迴前序遍歷
6. 二叉樹中序遍歷(遞迴)
7. 二叉樹中序遍歷非遞迴
8. 後續遍歷
9. 非遞迴後序遍歷二叉樹
10. 自下而上分層遍歷
11. 從上而下層次列印
12. 求第層節點個數
13. 求第層的葉子節點個數
14. 兩顆二叉樹是否結構相同
15. 判斷是否是平衡二叉樹
16. 判斷是否是對稱二叉樹
17. 求二叉樹的最低公共祖先
18. 求二叉樹的長度或者直徑(疑問)·
19. 路徑總和II
20. 求根到葉子節點數字之和
當這些基礎演算法都掌握了,這個時候再去分析JDK裡面用到的各種資料結構或者演算法,比如說Collections類的sort是採用的什麼排序方式(不止一種額,分情況有好幾種);然後再嘗試去分心JDK裡面各種資料結構的使用場景,比如說紅黑樹、佇列、堆疊、跳躍表之類的;最後,再去思考或者總結各種演算法與資料結構最適用的場景。如果這些你都很清楚了,那麼我相信你的是演算法與資料結構肯定已經學的很好了。
回覆列表
java已經做了很好的封裝,你需要了解大量的類庫,以及會查詢幫助文件就可以了。如何你想學資料結構以及演算法,可以學習c++