我有一个关于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?
好吧,你使用的是一个链表,所以如果你指向一个特定的节点,而该节点在下一个节点中有更多的节点,那么你就会得到所有的节点。
那么这里有什么问题呢?
嗯,实际上什么都没有。您正在返回头-
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- 请回顾一下这个,帮我即兴创作