zoukankan      html  css  js  c++  java
  • 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
    
  • 相关阅读:
    数据库_连接查询
    日志
    日常小技巧
    『转载』OpenLayers 5 使用turf.js渲染克里金插值计算的等值面
    Openlayers3中如何优雅的表示等值面
    远程桌面拷贝超大文件
    turf.js intersect()裁剪存在空洞
    web worker示例demo
    meta标签作用
    geojson 标准格式学习
  • 原文地址:https://www.cnblogs.com/davis12/p/15384599.html
Copyright © 2011-2022 走看看