zoukankan      html  css  js  c++  java
  • 合并两个有序链表

    将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
    示例:输入:1->2->4, 1->3->4
    输出:1->1->2->3->4->4

    执行用时 :56 ms, 在所有 Python3 提交中击败了74.14% 的用户
    内存消耗 :13.9 MB, 在所有 Python3 提交中击败了5.66%的用户

    # Definition for singly-linked list.
    # class ListNode:
    #     def __init__(self, x):
    #         self.val = x
    #         self.next = None
    class Solution:
        def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
            #第一种情况是l1为空,合并后的有序链表是l2
            if l1==None:
                return l2
            #第二种情况是l2为空,合并后的有序链表是l2
            elif l2==None:
                return l1
            #第三种情况是l1和l2都为空,返回None
            elif l1==None and l2==None:
                return None
            #如果l1和l2都不为空
            if l1 and l2:
                #如果l1的链表头大于l2的链表头,将l1和l2互换,所以l1的链表头始终是最小的
                if l1.val > l2.val: 
                    l1, l2 = l2, l1
                #新的链表还是l1.next,指针指向l1.next和l2
                l1.next = self.mergeTwoLists(l1.next, l2)
            #如果l1的链表头大于l2的链表头,将l1和l2互换,否则的话不用调换,所以l1的链表头始终是最小的,最终得到的新的链表一直都是l1
            return l1 
    

    算法题目来自 https://leetcode-cn.com/problems/merge-two-sorted-lists/

    关于合并两个有序链表,数据结构概念,在这个里面比较详细
    https://www.cnblogs.com/jason2013/articles/4341153.html

  • 相关阅读:
    docker 常用
    vue-cli 的静态资源
    ubuntu 恢复模式
    virtualbox
    cmake 使用技巧
    VLC播放pcm
    Ice-Lite 理解
    webrtc ice流程
    Mediasoup_Demo信令过程, client and server
    Mediasoup
  • 原文地址:https://www.cnblogs.com/llb123/p/13398743.html
Copyright © 2011-2022 走看看