• 021-leetcode算法实现之合并两个有序链表-merge-two-sorted-lists-python&golang实现


    将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

    示例 1:

    输入:l1 = [1,2,4], l2 = [1,3,4]
    输出:[1,1,2,3,4,4]
    示例 2:

    输入:l1 = [], l2 = []
    输出:[]
    示例 3:

    输入:l1 = [], l2 = [0]
    输出:[0]

    提示:

    两个链表的节点数目范围是 [0, 50]
    -100 <= Node.val <= 100
    l1 和 l2 均按 非递减顺序 排列

    python

    class ListNode:
        def __init__(self, val=0, next=None):
            self.val = val
            self.next = next
    
    # iteration实现
    class Solution:
        def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
            prevhead = ListNode(-1) # 哨兵节点,方便返回节点
            prev = prevhead
    
            # 遍历两链表,如有None则跳出循环
            while l1 and l2:
                if l1.val <= l2.val: # l1的节点值小,prev指针指向l1,l1节点右移
                    prev.next = l1
                    l1 = l1.next
                else: # l2的节点值小,prev指针指向l2,l2节点右移
                    prev.next = l2
                    l2 = l2.next
                prev = prev.next
    
            # prev的next指针指向非空链表
            prev.next = l1 if l1 is not None else l2
    
            return prevhead.next
    
    if __name__ == "__main__":
        # 1->3->8
        l1_ = [1,3,8]
        l1 = ListNode()
        for item in l1_:
            l1.next = ListNode(-1)
            l1 = l1.next
    
        # 0->2->3->9->11
        l2_ = [0,2,3,9,11]
        l2 = ListNode()
        for item in l2_:
            l2.next = ListNode(-1)
            l2 = l2.next
    
  • 相关阅读:
    java泛型
    跨域传递
    laravel的一些语法
    去重
    laravel的一些查询语句
    mysql把之前表单进行拆分
    Laravel5.1接收json数据
    thinkphp5 composer安装验证码
    关于地图经纬度的问题
    tp5分组查询
  • 原文地址:https://www.cnblogs.com/davis12/p/15384599.html
Copyright © 2020-2023  润新知