作为一名链表数据结构的学习者,我正在练习Leetcode问题“反向链表”,我有自己的解决方案,但不知道为什么它是错误的,有专家可以分享一些指导吗?真的很感激!
Leetcode问题:
反转单链接列表。
例:
输入:1-
输出: 5-
我的代码:
class Solution(object):
def reverseList(self, head):
"""
:type head: ListNode
:rtype: ListNode
"""
prev = None
while head:
temp = head
temp.next = prev
head = head.next
prev = temp
return prev
然而,上述解决方案是错误的,但可以通过在“temp.next=prev”和“head=head.next”之间切换位置进行纠正,如下所示:
class Solution(object):
def reverseList(self, head):
"""
:type head: ListNode
:rtype: ListNode
"""
prev = None
while head:
temp = head
head = head.next
temp.next = prev
prev = temp
return prev
对我来说,切换两种说法没有区别,怎么就不一样了呢?
temp=head
使temp
引用与head
相同的对象
记住这一点,下一行temp。next=prev
实际上与head相同。next=prev
,因为它们在代码中引用了相同的对象。
修复程序解决了这个问题,因为在您影响head
引用的对象之前,您将重新分配head
完全引用的对象-特别是链接列表中的下一个对象。
你必须记住,在表面之下,我们处理的是指针,以及它们在内存中指向的空间。
对于第一个解决方案,head不能将自己分配给head.next,因为temp.next现在指向无。通过将temp.next分配为null,您已经有效地将head.next重新分配为null。
第二种解决方案通过重新分配头到头来解决这个问题。下一个这并不意味着温度会随着头部移动。头现在指向头。然后,temp指向head的前一个节点(在它转到head.next之前)。
以下是循环开始前的参考资料:
prev --> None
head --> [something| *-]-> [something| *-]-> ...
在temp=head
之后:
prev --> None
head --> [something| *-]-> [something| *-]-> ...
^
|
temp ----+
在temp之后。下一步=上一步
:
prev --> None
head --> [something| *-]-> None .... -> [something| *-]-> ...
^
|
temp ----+
你不再有任何关于列表中头后面部分的参考<代码>头部=头部。接下来只需将头
设置为无
prev
然后被设置为现在被截断的列表的开头。
给定一个0和1的数组,我们最多可以将K个值从0更改为1。 返回仅包含1的最长(连续)子数组的长度。 例1: 例2: 注: https://leetcode.com/problems/max-consecutive-ones-iii/ 这是问题链接。在第一个测试用例中,我得到了输出9,但应该是6。我不知道哪里出了问题?
我拿不到输出。。有人能帮我得到输出吗 下面给出了程序运行的示例(注意:下面的粗体文本是用户输入的输入): 输入三角形的三条边
抱歉,如果不允许这样做。这是我第一次问问题。无论如何,我应该实现一个程序,根据文本读取等级。 “实施一个程序,根据以下内容计算理解某些文本所需的大致年级水平。文本:恭喜!今天是你的一天。你要去很棒的地方!你走了,走了!3 年级 在完成代码之后。每次我编译它时,它都会给我一个异常,即我除以零。几乎就像在我要求用户输入文本后,它根本不被读取,字母计数保持在零。我不知道如何绕过它。下面是我导入java.
如果参数的类型是int或float,函数应该返回>函数输入的绝对值。 否则,函数应返回“nope” 我已经完成了第一个任务,但我认为我已经完成了任务
我在 Debian 上托管了一个 web 应用程序,在端口 8443 上公开。我正在使用SSL的letsencrypt证书(通过certbot),当我连接到 https://example.com:8443 时,webapp工作正常。 为了允许连接通过https://example.com我使用nginx作为反向代理,多年来一直运行良好。然而,在上个月发生了一些事情,这些事情不再起作用。我的配置不
我拿不到输出。。有人能帮我得到输出吗 下面给出了程序运行的示例(注意:下面的粗体文本是用户输入的输入): 进入三角形的三个边