經典串列題 合併已排序好的兩條串列 Merge Two Sorted Lists Leetcode #21

閱讀時間約 3 分鐘
raw-image

這題的題目在這裡:

題目敘述

題目會給我們兩條已經從小到大排序好的串列,要求我們依照從小到大的順序,合併這兩條串列。


測試範例

Example 1:

raw-image
Input: list1 = [1,2,4], list2 = [1,3,4]
Output: [1,1,2,3,4,4]

Example 2:

Input: list1 = [], list2 = []
Output: []

Example 3:

Input: list1 = [], list2 = [0]
Output: [0]

約束條件

Constraints:

  • The number of nodes in both lists is in the range [0, 50].
  • -100 <= Node.val <= 100
  • Both list1 and list2 are sorted in non-decreasing order.

演算法

raw-image

其實這一題可以結合經典的雙指針、遞迴的技巧,簡潔的解開。

介面與參數:
list1, list2 分別指向兩條串列頭部當下要比較的位置

通則:
如果list1當下節點的值 比 list2當下節點的的值還小,則list1放在前面,並且list1指向下一回合次小的節點。

同樣的道理,對於另一種情況也是對稱的。

如果list2當下節點的值 比 list1當下節點的的值還小,則list2放在前面,並且list2指向下一回合次小的節點。

終止條件:
如果list2已經空了,那麼已經不需要比較和合併,直接回傳list1即可。

同樣的道理,對於另一種情況也是對稱的。

如果list1已經空了,那麼已經不需要比較和合併,直接回傳list2即可。


程式碼

class Solution:
 def mergeTwoLists(self, list1: Optional[ListNode], list2: Optional[ListNode]) -> Optional[ListNode]:
  
  # List 1 is empty, then result is decided by List 2
  if not list1:
   return list2
  
  # List 2 is empty, then result is decided by List 1
  if not list2:
   return list1
  
  # General cases: compare node value, and update linkage
  if list1.val < list2.val:
   list1.next = self.mergeTwoLists(list1.next, list2)
   return list1
   
  else:
   list2.next = self.mergeTwoLists(list1, list2.next)
   return list2

複雜度分析

另 m, n 分別為list1, list2串列的長度

時間複雜度:

O( m+n ) 最長的長度就是每個節點交叉比大小,合併後的串列最後總長度為O(m+n)

空間複雜度:

O( m+n ) 最長的長度就是每個節點交叉比大小,遞迴stack最深所需空間為O(m+n)


關鍵知識點

關鍵在於,比較的時候,只要比較排頭即可,後續的比較都是依樣畫葫蘆,比較和合併模式是共通的。


Reference:

[1] Python/Go/Java/JS/C++ O( m + n ) simple recursion [w/ Comment] - Merge Two Sorted Lists - LeetCode

82會員
417Content count
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
留言0
查看全部
發表第一個留言支持創作者!
題目會給定一組輸入陣列,裡面每個參數分別代表矩陣的寬和高。 如果有兩個矩陣的寬/高的比例是相同的,代表這兩個矩陣是等比例的。 要求我們計算,等比例的矩陣pair總共有多少個?
題目會給定我們一個輸入陣列,要求我們計算好配對的數目有多少個? 好配對的定義: 兩個數字相同,但是陣列索引一個在前,一個在後。 nums[i] == nums[j] and i < j. 這樣 (i, j) 就稱為一組好配對。
題目會給定我們一個陣列和參數k,要求我們將陣列右旋k次,然後輸出內容。 例如[1,2,3,4,5] 右旋 2次,輸出就是[4,5,1,2,3]
題目會給定我們一個陣列,要求我們找出裡面統計最多出現次數的偶數 。 假如有兩個偶數出現的次數一樣多,取最數字比較小的那個最為答案。
題目會給定我們一個陣列,陣列長度為n。 要求我們找出裡面出現次數超過 n / 3次的數字。
題目會給定我們一個輸入陣列,裡面的字母A和字母B分別代表兩種顏色的卡片。 假如某張卡片的左右都是相同的,例如AAA,Alice可以抽掉中間那張A。 同樣的,假如某張卡片的左右都是相同的,例如BBB,Bob可以抽掉中間那張B。 請問Alice和Bob輪流玩抽卡遊戲, 請問最後是誰贏?
題目會給定一組輸入陣列,裡面每個參數分別代表矩陣的寬和高。 如果有兩個矩陣的寬/高的比例是相同的,代表這兩個矩陣是等比例的。 要求我們計算,等比例的矩陣pair總共有多少個?
題目會給定我們一個輸入陣列,要求我們計算好配對的數目有多少個? 好配對的定義: 兩個數字相同,但是陣列索引一個在前,一個在後。 nums[i] == nums[j] and i < j. 這樣 (i, j) 就稱為一組好配對。
題目會給定我們一個陣列和參數k,要求我們將陣列右旋k次,然後輸出內容。 例如[1,2,3,4,5] 右旋 2次,輸出就是[4,5,1,2,3]
題目會給定我們一個陣列,要求我們找出裡面統計最多出現次數的偶數 。 假如有兩個偶數出現的次數一樣多,取最數字比較小的那個最為答案。
題目會給定我們一個陣列,陣列長度為n。 要求我們找出裡面出現次數超過 n / 3次的數字。
題目會給定我們一個輸入陣列,裡面的字母A和字母B分別代表兩種顏色的卡片。 假如某張卡片的左右都是相同的,例如AAA,Alice可以抽掉中間那張A。 同樣的,假如某張卡片的左右都是相同的,例如BBB,Bob可以抽掉中間那張B。 請問Alice和Bob輪流玩抽卡遊戲, 請問最後是誰贏?
你可能也想看
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
《與成功有約》作者柯維被《時代》雜誌列為25位最有影響力的美國人之一。而《富比斯》也將其評為有史以來最具影響力的10大管理類書籍之一。 柯維在書中傳授的內容不是某種流行趨勢或管理技巧,而是不會因為環境變化而過時,能夠持續指導行為的基本原則,主張通過思維的改變達到行為的改變,是一個“從裡到外”的變化。
Thumbnail
在家找到多年前姪女送我的日文版《經典日劇主題曲》雙CD,只看過少部分劇集,其他是只聞其名,或看過幾集,不是人家不好,因自己從小是廣播迷,接近21世紀才開始在網絡串流平台實時追劇,算是追不上潮流的老古董。
Thumbnail
當「擁抱」成為傳遞情感的身體語言,雙手緊貼著另一人的後背,把頭靠在對方的肩上,也將自身的重量交付給對方,這正是《戀愛修課》第二季帶給我的感受,我們接收到角色們的狀態,那些欲言又止的惶恐、那些傾瀉而出的情感、那些藏不住的愛意。當我們意識到「自己不再是一個人」,有了朋友、有了男友之後,能否把最真實的自己
Thumbnail
「柳林中的風聲」是一本細細描寫大自然給孩子的書籍。讓孩子好好感受自然的書籍。 . 本書的起源這是一個小男孩每天晚上睡覺前,要爸爸講一個有關「鼴鼠和他的朋友們」的故事,然後伴著這些小動物的友誼和歡笑進入夢鄉。而講著講著,就形成一個精彩的大自然故事。這是西元1907年的事情了。對於2022年的孩子來
Thumbnail
介紹包括101求婚、魔女的條件、一個屋簷下、神啊!請多給我一點時間、熟男不結婚等15部經典日劇,及其劇中的歌曲與配樂,讓我們回到那些熟悉的劇情和歌曲,也回到自己也曾有過相同印記的回憶...
Thumbnail
Hi there,不曉得大家有沒有發現,近期 Madonna 在串流軟體上的動作頻頻,自從之前的冠軍混音舞曲專輯《Finally Enough Love: 50 Number Ones》(2022) 的計畫之後,最近漸漸可以在串流軟體上聽到早前他的一些單曲,通常有可能是原聲帶、或是沒有在全球
Thumbnail
如果有不熟調酒的朋友要一起去酒吧問987要點甚麼,我大概就會直接說出新加坡司令這杯新加坡的代表調酒,據說只要搭星航就可以免費請空姐調一杯給你(對,就是要空姐調)😏 這杯清爽果汁酸甜,一點來自琴酒、DOM、苦精等藥草系香味,低酒感再搭上一點的氣泡,又是可以慢慢喝的長飲,真的是很討喜😳
Thumbnail
在釜揚烏龍麵系列中,蛋拌烏龍麵最受喜愛。被烏龍麵的熱氣蒸得滑嫩的蛋白,和濃厚的蛋黃,與高湯醬油水乳交融,呈現最佳的美味!
Thumbnail
最近想開啟「經典電影」「藝文選片」等影評計畫,剛好發現BBC曾在2016年評選出二十一世紀百大電影,而高居第一名的是大衛林區的《穆荷蘭大道》。 在對劇情一無所知的情況下直接看了電影,非常喜愛,連續看了兩遍!緊接著看的紀錄片《大衛林區:獨白囈語》,也讓人更加理解導演眼中的世界、他所沉浸的藝術實驗,
Thumbnail
<p>Hannibal同樣具有所有天才角色具備的特質:喜好挑戰。不論他留下多少證據,那也都是為了給予錯誤引導。也喜歡在犯案之後,以無辜的身份詢問FBI的調查狀況,並暗自享受勝利的滋味。</p>
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
《與成功有約》作者柯維被《時代》雜誌列為25位最有影響力的美國人之一。而《富比斯》也將其評為有史以來最具影響力的10大管理類書籍之一。 柯維在書中傳授的內容不是某種流行趨勢或管理技巧,而是不會因為環境變化而過時,能夠持續指導行為的基本原則,主張通過思維的改變達到行為的改變,是一個“從裡到外”的變化。
Thumbnail
在家找到多年前姪女送我的日文版《經典日劇主題曲》雙CD,只看過少部分劇集,其他是只聞其名,或看過幾集,不是人家不好,因自己從小是廣播迷,接近21世紀才開始在網絡串流平台實時追劇,算是追不上潮流的老古董。
Thumbnail
當「擁抱」成為傳遞情感的身體語言,雙手緊貼著另一人的後背,把頭靠在對方的肩上,也將自身的重量交付給對方,這正是《戀愛修課》第二季帶給我的感受,我們接收到角色們的狀態,那些欲言又止的惶恐、那些傾瀉而出的情感、那些藏不住的愛意。當我們意識到「自己不再是一個人」,有了朋友、有了男友之後,能否把最真實的自己
Thumbnail
「柳林中的風聲」是一本細細描寫大自然給孩子的書籍。讓孩子好好感受自然的書籍。 . 本書的起源這是一個小男孩每天晚上睡覺前,要爸爸講一個有關「鼴鼠和他的朋友們」的故事,然後伴著這些小動物的友誼和歡笑進入夢鄉。而講著講著,就形成一個精彩的大自然故事。這是西元1907年的事情了。對於2022年的孩子來
Thumbnail
介紹包括101求婚、魔女的條件、一個屋簷下、神啊!請多給我一點時間、熟男不結婚等15部經典日劇,及其劇中的歌曲與配樂,讓我們回到那些熟悉的劇情和歌曲,也回到自己也曾有過相同印記的回憶...
Thumbnail
Hi there,不曉得大家有沒有發現,近期 Madonna 在串流軟體上的動作頻頻,自從之前的冠軍混音舞曲專輯《Finally Enough Love: 50 Number Ones》(2022) 的計畫之後,最近漸漸可以在串流軟體上聽到早前他的一些單曲,通常有可能是原聲帶、或是沒有在全球
Thumbnail
如果有不熟調酒的朋友要一起去酒吧問987要點甚麼,我大概就會直接說出新加坡司令這杯新加坡的代表調酒,據說只要搭星航就可以免費請空姐調一杯給你(對,就是要空姐調)😏 這杯清爽果汁酸甜,一點來自琴酒、DOM、苦精等藥草系香味,低酒感再搭上一點的氣泡,又是可以慢慢喝的長飲,真的是很討喜😳
Thumbnail
在釜揚烏龍麵系列中,蛋拌烏龍麵最受喜愛。被烏龍麵的熱氣蒸得滑嫩的蛋白,和濃厚的蛋黃,與高湯醬油水乳交融,呈現最佳的美味!
Thumbnail
最近想開啟「經典電影」「藝文選片」等影評計畫,剛好發現BBC曾在2016年評選出二十一世紀百大電影,而高居第一名的是大衛林區的《穆荷蘭大道》。 在對劇情一無所知的情況下直接看了電影,非常喜愛,連續看了兩遍!緊接著看的紀錄片《大衛林區:獨白囈語》,也讓人更加理解導演眼中的世界、他所沉浸的藝術實驗,
Thumbnail
<p>Hannibal同樣具有所有天才角色具備的特質:喜好挑戰。不論他留下多少證據,那也都是為了給予錯誤引導。也喜歡在犯案之後,以無辜的身份詢問FBI的調查狀況,並暗自享受勝利的滋味。</p>