概述
题目描述:
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入: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. 合并两个有序链表题目描述:分析:代码:复杂度:所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复