0
点赞
收藏
分享

微信扫一扫

Leetcode 006 合并两个有序链表

往复随安_5bb5 2022-01-20 阅读 61

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

示例:

Python解法1:递归

比较两个链表的头部值哪个更小,更小的那个元素将被添加到新的链表中,然后比较下一组,以此类推直到出现空值。

class Solution:
    def mergeTwoLists(self, list1: Optional[ListNode], list2: Optional[ListNode]) -> Optional[ListNode]:
        if list1 is None:
            return list2
        elif  list2 is None:
            return list1
        elif list1.val<list2.val:
            list1.next = self.mergeTwoLists(list1.next,list2)
            return list1
        else:
            list2.next = self.mergeTwoLists(list1,list2.next)
            return list2

结果:

解法2:迭代

 设定一个哨兵节点怕prehead,比较两个链表中的头部值,选出其中的较小值放入哨兵节点后面,然后接着比较下一组,以此类推直到出现空值。

class Solution:
    def mergeTwoLists(self, list1: Optional[ListNode], list2: Optional[ListNode]) -> Optional[ListNode]:
        prehead = ListNode(-1)
        prev = prehead

        while list1 and list2:
            if list1.val<=list2.val:
                prev.next = list1
                list1 = list1.next
            else:
                prev.next = list2
                list2 = list2.next
            
            prev = prev.next

        if list1 is not None:
            prev.next = list1
        else:
            prev.next = list2
        
        return prehead.next

 结果:

 

举报

相关推荐

0 条评论