思路一:遞迴
# definition for singly-linked list.
# class listnode:
# def __init__(self, val=0, next=none):
# self.val = val
# self.next = next
class
solution
:def
mergetwolists
(self, l1: listnode, l2: listnode)
-> listnode:
if l1 is
none
:return l2
elif l2 is
none
:return l1
elif l1.val
l1.next
=self.mergetwolists(l1.
next
,l2)
return l1
else
: l2.
next
=self.mergetwolists(l1,l2.
next
)return l2
class
solution
else
if(l2==
null
)else
if(l1.val
else
}}
思路二:迭代,逐個對比,安在新鍊錶上
# definition for singly-linked list.
# class listnode:
# def __init__(self, val=0, next=none):
# self.val = val
# self.next = next
class
solution
:def
mergetwolists
(self, l1: listnode, l2: listnode)
-> listnode:
pre=listnode(-1
)#隨便設乙個頭
p=pre
while l1 and l2:
if l1.val
p.next
=l1 l1=l1.
next
else
: p.
next
=l2 l2=l2.
next
p=p.
next
# 合併後 l1 和 l2 最多只有乙個還未被合併完
#我們直接將鍊錶末尾指向未合併完的鍊錶即可
p.next
=l1 if l1 is
notnone
else l2
return pre.
next
class
solution
else
p=p.next;
} p.next= l1==
null
?l2:l1;
return pre.next;
}}
補充:88、合併兩個有序陣列【簡單】
給你兩個有序整數陣列 nums1 和 nums2,請你將 nums2 合併到 nums1 中,使 nums1 成為乙個有序陣列。
class
solution
:def
merge
(self, nums1: list[
int]
, m:
int, nums2: list[
int]
, n:
int)
->
none
:"""
do not return anything, modify nums1 in-place instead.
"""res=
i=j=
0while i
if i==m:
) j+=
1elif j==n:
) i+=
1elif nums1[i]
i+=1else:)
j+=1 nums1[:]
=res[
:]
class
solution
else
if(j==n)
else
if(nums1[i]
)else
}for
(int x =
0; x < m + n; x++)}
}
不使用額外空間:在nums1從後往前,從nums1[m+n-1]的位置往前填充
class
solution
else
if(p2 ==-1
)else
if(nums1[p1]
> nums2[p2]
)else
nums1[tail--
]= cur;}}
}
21 合併兩個有序鍊錶 簡單
菜鳥解答 definition for singly linked list.struct listnode struct listnode mergetwolists struct listnode l1,struct listnode l2 else scan tmp scan tmp next...
leetcode21 合併兩個有序鍊錶
將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4 思路 每次判斷兩個鍊錶的頭部小的數值,訪問小的,並讓該鍊錶往後移動。注意 注意鍊錶走完,為空的情況即可。遇到的問題 一開始不太理解鍊錶,返回e...
LEETCODE 21 合併兩個有序鍊錶
將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4c 第一遍將 相等 的這個else分支寫錯了,主要錯誤在於,next指標指向下乙個的這條語句寫到了後面,導致節點自己指向自己,造成了超時錯誤 執...