【LeetCode】Merge Two Sorted Lists

来源:互联网 发布:淘宝秒杀最准的时间 编辑:程序博客网 时间:2024/05/29 15:48

Description

Merge Two Sorted Lists

Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.

Code

  1. 原始版 72ms
class Solution(object):    def mergeTwoLists(self, l1, l2):        head = ListNode(0)        tmp = head        while l1 != None and l2 != None:            if l1.val < l2.val:                tmp.next = ListNode(l1.val)                l1 = l1.next            else:                tmp.next = ListNode(l2.val)                l2 = l2.next            tmp = tmp.next        if l1 != None:            l = l1        else:            l = l2        while l != None:            tmp.next = ListNode(l.val)            tmp = tmp.next            l = l.next        return head.next

2.  优化版 52ms

class Solution(object):    def mergeTwoLists(self, l1, l2):        head = ListNode(0)        tmp = head        while l1 != None and l2 != None:            if l1.val < l2.val:                tmp.next = l1                l1 = l1.next            else:                tmp.next = l2                l2 = l2.next            tmp = tmp.next        if l1 != None:            tmp.next = l1        else:            tmp.next = l2        return head.next

Note

  1. 思路
        其实根本就不用复制出一条新的链表存放结果嘛,直接在原来的两条链上改造就是了(第6~11行)。
        对于某一条链中剩下的部分,不必一一复制,将现有结果的最后一个结点的next指向那条链中剩下的部分的头节点即可(第13~16行)
0 0
原创粉丝点击