gpt4 book ai didi

python - (Python) 单链表 - Leetcode

转载 作者:太空宇宙 更新时间:2023-11-04 11:10:36 25 4
gpt4 key购买 nike

我正在研究这个 Leetcode 问题 https://leetcode.com/problems/odd-even-linked-list/ .我已经尝试使用调试工具调试程序,并在我的代码中发现了错误,但我并不真正了解错误,也不知道如何修复它。该错误来自这一行:odd_head.next = even_head感谢您的帮助!

问题是:给定一个单向链表,将所有奇数节点组合在一起,然后是偶数节点。请注意,这里我们讨论的是节点号,而不是节点中的值。

For example:
Input: 2->1->3->5->6->4->7->NULL
Output: 2->3->6->7->1->5->4->NULL

Input: 1->2->3->4->5->NULL
Output: 1->3->5->2->4->NULL
def oddEvenList(self, head):
odd_head = head
even_head = head.next

while(odd_head.next and odd_head.next.next):
temp = odd_head.next.next
odd_head.next = temp
odd_head = temp

odd_head.next = even_head # BUG ON THIS LINE

while(even_head.next and even_head.next.next):
temp = even_head.next.next
even_head.next = temp
even_head = temp

return odd_head

最佳答案

考虑这个列表:2->1->3->5->6->4->7->NULL

当您的代码到达:

odd_head.next = even_head

链接将是:

2->3
3->6
6->7
7->NULL

1->3
5->6
4->7

even_head.next 将为 3

even_head.next.next 将是 6 而不是 5(这是错误的。)

原因是链接在第一个 while 循环中被改变了!因此,一切都从这里开始出错。


在许多可能的解决方案中,一个简单的解决方案:

def oddEvenList(self, head):
if not head:
return head

odd_head = head
even_head_copy = even_head = head.next

while odd_head and even_head and even_head.next:
odd_head.next = even_head.next
odd_head = odd_head.next

even_head.next = odd_head.next
even_head = even_head.next

odd_head.next = even_head_copy
return head

关于python - (Python) 单链表 - Leetcode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58300589/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com