中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

劍指offer:合并兩個排序的鏈表

發布時間:2020-07-27 20:23:29 來源:網絡 閱讀:273 作者:Jayce_SYSU 欄目:編程語言

題目描述
輸入兩個單調遞增的鏈表,輸出兩個鏈表合成后的鏈表,當然我們需要合成后的鏈表滿足單調不減規則。

# -*- coding: utf-8 -*-
# @Time         : 2019-04-24 10:17
# @Author       : Jayce Wong
# @ProjectName  : job
# @FileName     : mergeSortedLinkedList.py
# @Blog         : https://blog.51cto.com/jayce1111
# @Github       : https://github.com/SysuJayce

class ListNode:
    def __init__(self, x):
        self.val = x
        self.next = None

class Solution:
    # 返回合并后列表
    def Merge(self, pHead1, pHead2):
        # 如果任何一個鏈表為空,那么返回另一個鏈表
        if not pHead1:
            return pHead2
        if not pHead2:
            return pHead1

        # 選擇兩個頭節點中值最小的那個作為新的頭節點,然后新的頭節點的下一個節點就可以遞歸下去
        if pHead1.val < pHead2.val:
            head = pHead1
            head.next = self.Merge(pHead1.next, pHead2)
        else:
            head = pHead2
            head.next = self.Merge(pHead1, pHead2.next)
        return head

    def Merge2(self, pHead1, pHead2):
        # 也可以不用遞歸的方法,使用循環的方法來歸并鏈表
        # 借助兩個輔助節點,其中begin用于定位返回鏈表的頭節點,pre用于定位返回鏈表的當前節點
        begin = pre = ListNode(0)
        while pHead1 and pHead2:
            if pHead1.val < pHead2.val:
                pre.next = pHead1
                pre = pre.next
                pHead1 = pHead1.next
            else:
                pre.next = pHead2
                pre = pre.next
                pHead2 = pHead2.next
        # 注意處理兩個鏈表長度不一致的情況
        if not pHead1:
            pre.next = pHead2
        if not pHead2:
            pre.next = pHead1
        return begin.next

def main():
    p1 = ListNode(1)
    p1.next = ListNode(3)
    p1.next.next = ListNode(5)

    p2 = ListNode(2)
    p2.next = ListNode(4)
    p2.next.next = ListNode(6)

    p = Solution().Merge(p1, p2)
    while p:
        print(p.val)
        p = p.next

if __name__ == '__main__':
    main()
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阿拉善左旗| 邯郸县| 安康市| 舒兰市| 江陵县| 壤塘县| 巨野县| 梨树县| 梓潼县| 东港市| 万山特区| 海安县| 北流市| 沭阳县| 营山县| 西乌珠穆沁旗| 军事| 余江县| 沙洋县| 中宁县| 仙居县| 福建省| 东山县| 扎鲁特旗| 衢州市| 长海县| 布尔津县| 拉孜县| 临湘市| 宁化县| 辛集市| 东安县| 罗源县| 泸州市| 黄骅市| 嵩明县| 土默特左旗| 积石山| 保亭| 洪雅县| 特克斯县|