題目
將兩個(gè)有序鏈表合并為一個(gè)新的有序鏈表并返回泽铛。新鏈表是通過(guò)拼接給定的兩個(gè)鏈表的所有節(jié)點(diǎn)組成的。
示例:
輸入:1->2->4, 1->3->4
輸出:1->1->2->3->4->4
來(lái)源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/merge-two-sorted-lists
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有瞄崇。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處到踏。
解題思路
本題是要合并兩個(gè)有序的鏈表杠袱。
- 首先申請(qǐng)head和curr指針,分別用來(lái)保存頭和當(dāng)前的指針
- 然后遍歷兩個(gè)指針窝稿,比較以后用curr指向他們楣富,更新curr和l1 l2 的指針
- 循環(huán)結(jié)束,還有沒(méi)有遍歷完成的鏈表伴榔,使用 l1 or l2保存到curr中
- 返回頭指針
代碼
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
head = cur = ListNode(0)
while l1 and l2:
if l1.val > l2.val:
cur.next = l2
l2 = l2.next
else:
cur.next = l1
l1 = l1.next
cur = cur.next
cur.next = l1 or l2
return head.next