Leetcode题目:Merge Two Sorted Lists

做的时候觉得思路很清晰,pa、pb分别在两个链表上移动,pc是新链表;

用测试案例 l1=[5], l2= [1,2,3,4] 来测试以后,发现返回结果是[1,5]

用类似的一个链表的所有元素都比另外一个链表的所有元素都大的case去测试,发现结果都是只有两个元素,第一个是最小的,第二个是最大的,中间的元素全部忽略了,实在不知道是为什么,就像是while循环里面的 pb = pb.next 这些没有执行一样;

求大神帮忙看一下,感激不尽!

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

class Solution(object):
    def mergeTwoLists(self, l1, l2):
        """
        :type l1: ListNode
        :type l2: ListNode
        :rtype: ListNode
        """
        if l1 is None:
            return l2       
        if l2 is None:
            return l1

        pa = l1
        pb = l2

        if l1.val <= l2.val:
            pc = l1
            pa = pa.next
        else:
            pc = l2
            pb = pb.next

        while pa is not None and pb is not None:
            if pa.val <= pb.val:
                pc.next = pa
                pa = pa.next
            else:
                pc.next = pb
                pb = pb.next
        
        if pa is not None:
            pc.next = pa
        if pb is not None:
            pc.next = pb
        return pc


小小神兽
浏览 1403回答 0
0回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python