合并两个有序链表

将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:输入: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

posted @ 2019-08-10 18:22  yunduoyun  阅读(128)  评论(0编辑  收藏  举报