美文网首页
Leetcode 21 合并两个有序链表

Leetcode 21 合并两个有序链表

作者: 禾木清清 | 来源:发表于2019-07-10 11:23 被阅读0次

    题目

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

    示例:

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

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/merge-two-sorted-lists
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    解题思路

    本题是要合并两个有序的链表。

    • 首先申请head和curr指针,分别用来保存头和当前的指针
    • 然后遍历两个指针,比较以后用curr指向他们,更新curr和l1 l2 的指针
    • 循环结束,还有没有遍历完成的链表,使用 l1 or l2保存到curr中
    • 返回头指针

    代码

    # 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:
            head = cur = ListNode(0)
            while l1 and l2:
                if l1.val > l2.val:
                    cur.next = l2
                    l2 = l2.next
                else:
                    cur.next = l1
                    l1 = l1.next
                cur = cur.next
            cur.next = l1 or l2
            return head.next
            
    

    相关文章

      网友评论

          本文标题:Leetcode 21 合并两个有序链表

          本文链接:https://www.haomeiwen.com/subject/epmckctx.html