美文网首页
剑指offer:16 合并两个排序的链表

剑指offer:16 合并两个排序的链表

作者: 毛毛毛毛毛豆 | 来源:发表于2019-08-10 23:36 被阅读0次

    题目描述

    输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。

    基本思想

    设定一个哨兵节点pHead,维护prev的next指针。next指针应该指向哪儿呢?需要比较pHead1和pHead2的“下一个”节点,prev指向两者中小的的那个。
    所以每次比较,先判断谁小,将prev的next指向它。再往后挪一个。
    每次循环,不管1或者2哪一个小,prev都要往后再走一个。(此处下一个目标节点已经确定好了,即1和2中更小的那个)
    最后考虑,1或2其中必定有一个剩余一些节点,这些节点中最小的那个,也是大于等于合并链表最大节点的,所以将它直接加入合并链表(已经排好序了)。

    Python

    class Solution:

        # 返回合并后列表

        def Merge(self, pHead1, pHead2):

            # write code here

            pHead = ListNode(-1)

            prev = pHead

            while pHead1 and pHead2:

                if pHead1.val < pHead2.val:

                    prev.next = pHead1

                    pHead1 = pHead1.next

                else:

                    prev.next = pHead2

                    pHead2 = pHead2.next

                prev = prev.next

            prev.next = pHead1 if pHead1 is not None else pHead2

            return pHead.next

    相关文章

      网友评论

          本文标题:剑指offer:16 合并两个排序的链表

          本文链接:https://www.haomeiwen.com/subject/eqbdjctx.html