码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode 每日一题 21. 合并两个有序链表

时间:2020-05-03 12:57:09      阅读:49      评论:0      收藏:0      [点我收藏+]

标签:link   链表   alt   fir   思路   leetcode   size   init   idt   

技术图片

迭代法

思路:

当L1和L2都不是空链表时,判断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: ListNode, l2: ListNode) -> ListNode:
        newList = ListNode(0)
        first = newList
        while l1 and l2:
            if l1.val < l2.val:
                first.next = l1
                l1 = l1.next
            else:
                first.next = l2
                l2 = l2.next
            first = first.next
        else:
            first.next = l1 if l1 else l2
        return newList.next

 

递归法

思路:

考虑到从头开始每个节点后面都是有序的,所以可以采用递归的方法对后面的节点进行有序拼接。

代码:

# 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:
        if not l1:
            return l2
        elif not l2:
            return l1
        elif l1.val < l2.val:
            l1.next = self.mergeTwoLists(l1.next,l2)
            return l1
        else:
            l2.next = self.mergeTwoLists(l1,l2.next)
            return l2

 

 

 

 

 

 

leetcode 每日一题 21. 合并两个有序链表

标签:link   链表   alt   fir   思路   leetcode   size   init   idt   

原文地址:https://www.cnblogs.com/nilhxzcode/p/12821040.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!