当前位置: 首页 > 知识库问答 >
问题:

python链接列表leetcode问题21合并两个排序列表

扈翰
2023-03-14

我有一个关于python中链接列表的快速问题。在下面显示的解决方案代码中,当我尝试合并两个排序的链接列表时。我对包含的if和elif语句的条件感到困惑。例如,如果l1不为空,l2为空,我想将l1中的其余3个元素添加到我的新链接列表中,但代码显示l1和tail没有更新,所以它不是只添加3个元素中的一个吗?

我的另一个问题是关于返回head.next.返回会自动返回从head.next到null ptr的每个节点吗?谢谢!

# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
        head = ListNode()
        tail = head
        
        while l1 and l2:
            if l1.val < l2.val:
                tail.next = l1
                l1 = l1.next
            else:
                tail.next = l2
                l2 = l2.next
            tail = tail.next
        
        if l1:
            tail.next = l1
            #why don't I update l1 and tail
        elif l2:
            tail.next = l2
            #why don't I update l2and and tail
        return head.next
        #does returning head.next return every single value from head.next to null?

共有1个答案

松嘉运
2023-03-14

好吧,你使用的是一个链表,所以如果你指向一个特定的节点,而该节点在下一个节点中有更多的节点,那么你就会得到所有的节点。

那么这里有什么问题呢?

嗯,实际上什么都没有。您正在返回头-

merged_list = solution.mergeTwoLists(lst1, lst2)
while merged_list:
    print(str(merged_list.val), end = ' -> ')
    merged_list = merged_list.next
print(merged_list)

例如,如果您有如下定义的链表< code>lst1和< code>lst2:

lst1 = ListNode(1)
lst1.next = ListNode(6)
lst1.next.next = ListNode(3)    # So lst1 is basically 1 -> 6 -> 3 -> None

lst2 = ListNode(4)
lst2.next = ListNode(5)
lst2.next.next = ListNode(2)    # And lst2 is basically 4 -> 5 -> 2 -> None

然后你会得到最终的结果:

1 -> 4 -> 5 -> 2 -> 6 -> 3 -> None

这正是您在代码中应用的内容。

 类似资料:
  • LeetCode上说明的问题如下: 合并k个排序链表,并将其作为一个排序列表返回。分析并描述其复杂性。 例子: 输入:[1- 我能够通过131个测试案例中的129个,但在案例130中达到了“超出时间限制”。下面是我的实现。 有人能发现瓶颈吗?对提高时间复杂度有什么建议吗? 我在没有使用的情况下遇到了超过时间限制的问题。测试用例130包含10,000个LinkedList。

  • 我试图解决的问题的措辞如下: 您将获得两个链表:大小分别为n和m的list1和list2。从ath节点到bth节点删除list1的节点,并将list2放置到位。 我将我的解决方案写成: 我很难理解为什么它不起作用。我似乎找不到我的错误

  • 问题:合并两个排序链表,并将其作为一个新的排序列表返回。新列表应该通过将前两个列表的节点拼接在一起来制作。 示例:输入:1- 我的解决方案: 我的输出只有1-

  • 本文向大家介绍python实现合并两个排序的链表,包括了python实现合并两个排序的链表的使用技巧和注意事项,需要的朋友参考一下 剑指offer:合并两个排序的链表,Python实现 题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 吐槽 本来想用递归实现,但是大脑卡壳,没有想到合适的递归策略,潜意识里还是把两个链表当成两个数组来看待,写出了

  • NowCoder 题目描述 解题思路 递归 // java public ListNode Merge(ListNode list1, ListNode list2) { if (list1 == null) return list2; if (list2 == null) return list1; if (list1.val <= lis

  • 假设列表“A”是1- 请回顾一下这个,帮我即兴创作