Java 100道演算法

李荣先辈Java發表於2024-08-13

陣列相關

  1. 查詢陣列中的最大和最小元素
  2. 實現陣列的反轉
  3. 查詢陣列中的第二大元素
  4. 從陣列中刪除重複元素
  5. 合併兩個有序陣列
  6. 找到陣列中和為指定值的兩個數
  7. 實現一個動態陣列(ArrayList)
  8. 找到陣列中出現次數超過一半的元素
  9. 尋找陣列的連續子陣列和為定值
  10. 查詢陣列中的峰值元素

字串相關

  1. 實現字串的反轉
  2. 判斷一個字串是否為迴文
  3. 統計字串中每個字元的出現次數
  4. 查詢字串中的第一個不重複字元
  5. 實現字串的全排列
  6. 查詢兩個字串的最長公共子串
  7. 判斷兩個字串是否為異位詞
  8. 實現字串的匹配(KMP演算法)
  9. 壓縮字串
  10. 計算兩個字串的編輯距離

連結串列相關

  1. 反轉連結串列
  2. 查詢連結串列的中間節點
  3. 刪除連結串列中的重複節點
  4. 合併兩個有序連結串列
  5. 檢查連結串列是否有環
  6. 刪除連結串列中的倒數第N個節點
  7. 在連結串列中找到環的入口點
  8. 對連結串列進行排序
  9. 合併K個有序連結串列
  10. 交換連結串列中的相鄰節點

樹相關

  1. 實現二叉樹的前序遍歷
  2. 實現二叉樹的中序遍歷
  3. 實現二叉樹的後序遍歷
  4. 實現二叉樹的層序遍歷
  5. 查詢二叉樹的最大深度
  6. 判斷一棵樹是否為二叉搜尋樹
  7. 查詢二叉搜尋樹的最小值和最大值
  8. 查詢二叉樹的最近公共祖先
  9. 求二叉樹的所有路徑
  10. 將二叉搜尋樹轉換為雙向連結串列

排序和搜尋

  1. 實現氣泡排序
  2. 實現選擇排序
  3. 實現插入排序
  4. 實現歸併排序
  5. 實現快速排序
  6. 實現堆排序
  7. 實現二分查詢
  8. 在旋轉排序陣列中查詢目標值
  9. 查詢第K大的元素
  10. 查詢缺失的數字

動態規劃

  1. 斐波那契數列
  2. 求解揹包問題
  3. 找到陣列中的最長遞增子序列
  4. 找到兩個字串的最長公共子序列
  5. 找到硬幣組合的最小數目
  6. 判斷是否能分割陣列為和相等的兩部分
  7. 最長迴文子串
  8. 不同路徑數量
  9. 編輯距離
  10. 房屋偷盜問題

數學問題

  1. 計算階乘
  2. 判斷一個數是否為質數
  3. 計算兩個數的最大公約數
  4. 實現一個冪函式
  5. 判斷一個數是否為迴文數
  6. 找到一個數的平方根
  7. 計算兩個數的最小公倍數
  8. 判斷一個數是否為醜數
  9. 求解楊輝三角形
  10. 找到一個數的所有因子

其他

  1. 實現LRU快取機制
  2. 查詢圖中的連通分量
  3. 實現深度優先搜尋(DFS)
  4. 實現廣度優先搜尋(BFS)
  5. 判斷兩個二叉樹是否相同
  6. 找到二叉樹中的所有葉子節點
  7. 計算二叉樹的直徑
  8. 生成括號的所有合法組合
  9. 找到N皇后問題的所有解
  10. 求解漢諾塔問題
  11. 實現一個執行緒安全的單例模式
  12. 實現一個生產者-消費者模型
  13. 計算陣列中逆序對的數量
  14. 檢查字串中的括號是否匹配
  15. 實現字串的全組合
  16. 查詢連結串列中的倒數第K個節點
  17. 實現連結串列的分割槽
  18. 判斷一個連結串列是否為迴文連結串列
  19. 實現一個佇列(FIFO)
  20. 實現一個棧(LIFO)
  21. 找到陣列中的第一個缺失正數
  22. 找到N個數中出現次數超過N/3的元素
  23. 在矩陣中找到目標值
  24. 查詢最長的無重複字元的子串
  25. 查詢陣列中連續子陣列的最大和
  26. 查詢二維矩陣中的峰值
  27. 找到一個字串中所有異位詞的起始索引
  28. 實現Trie(字首樹)
  29. 實現最短路徑演算法(如Dijkstra演算法)
  30. 解決約瑟夫環問題

相關文章