我是靠谱客的博主 勤恳衬衫,最近开发中收集的这篇文章主要介绍LeetCode刷题笔记--021. 合并两个有序链表题目描述:分析:代码:复杂度:,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题目描述:

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

示例:

输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4

分析:

一、维护一个当前节点cur,以及节点l1和l2。若l1和l2非空,如果l1的值小于l2的值,则将l1添加到cur.next中,反之则将l2添加到cur.next之中,并不断遍历下去。
二、考虑l1和l2为空的情况。

代码:


# Definition for singly-linked list.
# 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
        """
        if not l1 and not l2:
            return None
        if not l1:
            return l2
        if not l2:
            return l1
        
        head = cur = ListNode(-1)
        while l1 and l2:
            if l1.val < l2.val:
                cur.next = l1
                l1 = l1.next
            elif l2.val <= l1.val:
                cur.next = l2
                l2 = l2.next
            cur = cur.next
            
        cur.next = l1 if l1 else l2
        
        return head.next

复杂度:

时间复杂度为O( n n n),空间复杂度为O( 1 1 1)。

最后

以上就是勤恳衬衫为你收集整理的LeetCode刷题笔记--021. 合并两个有序链表题目描述:分析:代码:复杂度:的全部内容,希望文章能够帮你解决LeetCode刷题笔记--021. 合并两个有序链表题目描述:分析:代码:复杂度:所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部