【leetcode刷題】20T15-合併兩個有序鏈表
- 2020 年 2 月 16 日
- 筆記
木又同學2020年第15篇解題報告
leetcode第21題:合併兩個有序鏈表
https://leetcode-cn.com/problems/merge-two-sorted-lists/
【題目】
將兩個有序鏈表合併為一個新的有序鏈表並返回。新鏈表是通過拼接給定的兩個鏈表的所有節點組成的。
示例: 輸入:1->2->4, 1->3->4 輸出:1->1->2->3->4->4
【思路】
從頭結點開始,比較兩個鏈表l1和l2的元素,哪個鏈表的元素小,則新鏈表的尾部節點指向該元素,同時元素較小的原鏈表指針後移。
需要注意的是,在元素比較結束後,一定記得把剩餘的元素添加到新鏈表中(肯定有一個鏈表未訪問到所有元素)。
【代碼】
python版本
# Definition for singly-linked list. # class ListNode(object): # def __init__(self, x): # self.val = x # self.next = None class Solution(object): def mergeTwoLists(self, l1, l2): """ :type l1: ListNode :type l2: ListNode :rtype: ListNode """ head = ListNode(0) p = head head1, head2 = l1, l2 # 比較兩個鏈表節點的大小,插入新鏈表中 while head1 and head2: if head1.val < head2.val: p.next = head1 head1 = head1.next else: p.next = head2 head2 = head2.next p = p.next # 可能鏈表並未訪問結束 while head1: p.next = head1 head1 = head1.next p = p.next while head2: p.next = head2 head2 = head2.next p = p.next return head.next