1. 程式人生 > >劍指Offer16:合併兩個排序的連結串列

劍指Offer16:合併兩個排序的連結串列

思路:

1.新建兩個連結串列mergeHead和p,初始值為90。

2.判斷pHead1.val和pHead2.val值的關係。

若pHead1.val>=pHead2.val,將pHead2放入mergeHead.next 然後pHead2指標往後移一步。

若pHead1.val<pHead2.val,將pHead1放入mergeHead.next 然後pHead1指標往後移一步。

最後mergeHead指標往後移一步。繼續迴圈直到pHead1和pHead2有一個為空就結束。

3.再依次判斷pHead1和pHead2是否為空,若沒有則新增到mergeHead裡。最終返回p.next。

# -*- coding:utf-8 -*-
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None
class Solution:
    # 返回合併後列表
    def Merge(self, pHead1, pHead2):
        # write code here
        mergeHead = ListNode(90)
        p = mergeHead
        while pHead1 and pHead2:
            if pHead1.val >= pHead2.val:
                mergeHead.next = pHead2
                pHead2 = pHead2.next
            else:
                mergeHead.next = pHead1
                pHead1 = pHead1.next
            mergeHead = mergeHead.next
        if pHead1:
            mergeHead.next = pHead1
        elif pHead2:
            mergeHead.next = pHead2
        return p.next