首頁> Java> java教程> 主體

用java簡單且最佳的方式合併兩個排序的鍊錶

王林
發布: 2024-08-12 20:30:52
原創
570 人瀏覽過

Merge two sorted linked lists in java simple and optimal way

合併兩個已排序的鍊錶是一個可以有效解決的常見問題。以下是如何使用 Java 以簡單且最佳的方式完成此操作。

步驟:

  1. 建立虛擬節點:使用虛擬節點來幫助簡化合併過程。該節點將作為合併清單的開始。
  2. 比較節點:比較兩個鍊錶的目前節點。將較小的節點附加到合併列表並將該列表的指標向前移動。
  3. 處理剩餘節點:如果一個清單先於另一個清單耗盡,則將未耗盡清單的剩餘節點附加到合併清單中。
  4. 回傳合併清單:合併清單從虛擬節點旁的節點開始。

Java實作:

雷雷

解釋:

  1. ListNode 類別:

    • 用一個整數值(val)和一個指向下一個節點(next)的指標來表示鍊錶中的每個節點。
  2. mergeTwoLists 方法:

    • 虛擬節點:虛擬節點(dummy)用於透過提供起點來簡化合併過程。
    • 比較循環:我們遍歷兩個鍊錶,比較當前節點。較小的節點將添加到合併列表中,然後我們移動到該列表中的下一個節點。
    • 剩餘節點:其中一個清單耗儘後,我們將另一個清單的剩餘部分直接附加到合併清單中。
    • 回傳:最後,合併清單從虛擬節點旁的節點開始。
  3. printList 方法:

    • 這個實用函數列印鍊錶中的所有節點,以便於視覺化。
  4. 主要方法:

    • 建立兩個排序鍊錶:例如 1 -> 3-> 5和2-> 4-> 6.
    • 合併清單:合併後的清單將為 1 -> 2-> 3-> 4-> 5-> 6.
    • 列印清單:合併前後查看效果。

複雜:

  • 時間複雜度: ( O(n + m) ),其中 ( n ) 和 ( m ) 是兩個鍊錶的長度。兩個清單中的每個節點都被處理一次。
  • 空間複雜度:( O(1) ),因為除了幾個指標之外沒有使用額外的空間。

這種方法既簡單又適合合併兩個已排序的鍊錶,確保程式碼有效率且乾淨。

以上是用java簡單且最佳的方式合併兩個排序的鍊錶的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!