zoukankan      html  css  js  c++  java
  • 剑指 Offer 25. 合并两个排序的链表

    • 题目描述

    输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。

    示例1:

    输入:1->2->4, 1->3->4
    输出:1->1->2->3->4->4
    限制:

    0 <= 链表长度 <= 1000

    • 分析

    简单粗暴,参考题解:https://leetcode-cn.com/problems/he-bing-liang-ge-pai-xu-de-lian-biao-lcof/solution/mian-shi-ti-25-he-bing-liang-ge-pai-xu-de-lian-b-2/

    首先这里需要初始化一个伪结点Dum指向NewList

    然后循环合并:当l1或l2为空则跳出while循环

    1.当l1.val<l2.val时,此时NewList的后继节点指向为l1,l1往后遍历

    2.当l1.val>=l2.val时,此时NewList的后继节点指向为l2,l2往后遍历

    3.NewList前进,NewList = NewList.next

    合并剩余的尾部节点。

    返回值:此时返回的是伪结点之后的链表

    (为什么不需要比较每次NewList指向的后面的节点和Dum中的节点的大小,是因为在比较l1.val和l2.val的时候,每次只是移了小的那个val所在的链表)

    代码:

    class ListNode:
        def __init__(self, x):
            self.val = x
            self.next = None
    
    class Solution:
        def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
            NewList = Dum = ListNode(0) #Dum是伪结点
            while l1 and l2:
                if l1.val < l2.val:
                    NewList.next, l1 = l1, l1.next
                else:
                    NewList.next, l2 = l2, l2.next
                NewList = NewList.next
            NewList.next = l1 if l1 else l2
            return Dum.next
    
    a = ListNode(1)
    a.next = ListNode(2)
    a.next.next = ListNode(5)
    b = ListNode(1)
    b.next = ListNode(3)
    b.next.next = ListNode(4)
    s = Solution()
    r = s.mergeTwoLists(a,b)

     当 l_1l 1​  或 l_2l 2​  为空时跳出;当 l_1.val < l_2.vall 1​ .val<l 2​ .val 时: curcur 的后继节点指定为 l_1l 1​  ,并 l_1l 1​  向前走一步;当 l_1.val geq l_2.vall 1​ .val≥l 2​ .val 时: curcur 的后继节点指定为 l_2l 2​  ,并 l_2l 2​  向前走一步 ;节点 curcur 向前走一步,即 cur = cur.nextcur=cur.next 。
    作者:jyd链接:https://leetcode-cn.com/problems/he-bing-liang-ge-pai-xu-de-lian-biao-lcof/solution/mian-shi-ti-25-he-bing-liang-ge-pai-xu-de-lian-b-2/来源:力扣(LeetCode)著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 相关阅读:
    SSL和SSH的差别
    cocos2d-x 3.0游戏实例学习笔记 《跑酷》 第五步--button控制主角Jump&amp;Crouch
    UVA
    程序员,你们这么拼是找不到妹纸的!
    组件:表行组件
    表单修饰符.lazy.number.trim
    表单下拉框select
    表单单选按钮input[type="radio"]
    表单复选框input[type="checkbox"]
    表单控件绑定v-model
  • 原文地址:https://www.cnblogs.com/yeshengCqupt/p/13436665.html
Copyright © 2011-2022 走看看