(适合初学者)合并两个有序链表

    科技2023-09-21  69

    (适合初学者—非常详细)合并两个有序链表

    对于初学者,今天的题目对刚刚学习算法的同学会有些难度,但是还是要坚持住,一点一点研究,不会的地方一定要多查多看,百度是最好的老师,希望我每天都能够陪着一起学习算法的同学一起进步,一起加油,下面咱们今天一起看看今天的题目吧,首先一起看看这个题目的解析和主要的目的: 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。

    示例1:

    输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 限制: 0 <= 链表长度 <= 1000

    这个题目主要就是说明有两个链表,每个链表都是排好的顺序,想要把这个两个链表放到一个链表进行排序。一起看看下面的解析代码(学过数据结构的同学,应该会很快能够理解):

    class ListNode: #定义一个类,这个类主要是定义结点, def __init__(self, x): self.val = x#传入的值,也就是结点的值 self.next = None#下一个取值,一定要后面的函数对象创建和调用才能更好的了解 class Solution: def mergeTwoLists(self, l1, l2): """ :type l1: ListNode :type l2: ListNode :rtype: ListNode """ newHead = ListNode(0) pre = newHead while l1 and l2: if l1.val < l2.val: pre.next = l1 l1 = l1.next else: pre.next = l2 l2 = l2.next pre = pre.next if l1: pre.next = l1 elif l2: pre.next = l2 return newHead.next ###一定要看下面的内容你会很快就能理解到位的。 # 有序链表 head1 = ListNode(2) n1 = ListNode(3) n2 = ListNode(4) n3 = ListNode(9) head1.next = n1 n1.next = n2 n2.next = n3 head2 = ListNode(3) m1 = ListNode(5) m2 = ListNode(7) m3 = ListNode(8) head2.next = m1 m1.next = m2 m2.next = m3 s = Solution() res = s.mergeTwoLists(head1, head2) while res: print(res.val) res = res.next

    运行结果:

    Processed: 0.014, SQL: 8