021 mergeTwoLists

题目描述

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

示例:

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

代码

思路:(!!链表的val和链表的next要区分开,分别赋值)就和归并排序差不多

# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.next = None

def mergeTwoLists(l1, l2):
    """
    :type l1: ListNode
    :type l2: ListNode
    :rtype: ListNode
    """
    if l1 == None:
        return l2
    if l2 == None:
        return l1
    p = l1
    q = l2
    l3 = ListNode(None)
    w = l3
    while p != None or q != None:
        if p == None:
            w.val = q.val
            w.next = q.next
            break
        elif q == None:
            w.val = p.val
            w.next = p.next
            break
        else:
            if p.val <= q.val:
                w.val = p.val
                p = p.next
            else:
                w.val = q.val
                q = q.next
            tmp = ListNode(None)
            w.next = tmp
            w = tmp
    return l3

猜你喜欢

转载自blog.csdn.net/double___you/article/details/80446512