[Leetcode]21:Merge Two Sorted Lists

jojo lee
Jul 4, 2021

Link : https://leetcode.com/problems/merge-two-sorted-lists/

Problems : Merge two sorted linked lists and return it as a sorted list. The list should be made by splicing together the nodes of the first two lists.

把兩個排列過後的 list,按順序大小 merge成一個 list。

圖來自leetcode

Thoughts :
一開始想要直接會透過修改指針來做,結果發現會出現不知道要return l1 還 是 l2 的問題,後來才發現可以另外製作一個prev的指針來做就好,之後直接return prev.next就可以。

Solutions :
# iterative solution

class Solution:
def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
head = ListNode(0)
prev = head
while l1 and l2:
# 假設l1的node小於等於l2的node的話
if(l1.val <= l2.val):
#直接把prev的下一個接上,就沒有頭的問題
prev.next =l1
l1 = l1.next
else: #l1.val>l2.val
prev.next = l2
l2 = l2.next
# prev往下接
prev = prev.next
# 如果接下來 l1 是 None
if l1 == None:
# 直接接l2
prev.next = l2
# 如果l2接下來是 None
elif l2 == None:
# 直接接l1
prev.next = l1
return head.next

# Recursive Solution

Time Complexity : O(n+m)?, Space Complexity : O(1)?

--

--