python - 反转链表(迭代方法)
问题描述
我正在编写用于在 python 中反转链表的代码。以下代码未通过测试用例:
class ListNode(object):
def __init__(self, val=0, next=None):
self.val = val
self.next = next
class Solution(object):
def reverseList(self, head)
prev, curr = None, head
while curr:
curr.next = prev
prev = curr
curr = curr.next
return prev
虽然此代码通过:
class Solution(object):
def reverseList(self, head): # Iterative
prev, curr = None, head
while curr:
curr.next, prev, curr = prev, curr, curr.next
return prev
两者有什么区别?
解决方案
在您展开的代码中,当您到达最后一行时,curr.next
已被覆盖prev
。它不再具有原来的价值。两者都prev
将curr
指向旧的prev
。
推荐阅读
- python - 带有多索引列的熊猫子图
- go - 构建插件时链接器命令失败
- kotlin - 如何在 VS Code 中设置 Kotlin debug launch.json 配置?
- jsf - OmniFaces 中的 getCookie?
- javascript - 如何获得多个输入作为数组或对象?
- clojure - 如何按键对嵌套地图进行排序?
- android-studio - 在 File() 上获取目录 android studio kotlin 时出现问题
- c++ - 为什么程序启动时分配静态变量但稍后初始化?
- database - 动态字段的 ElasticSearch 映射
- python - 如何使用 Python 中的 pprint 函数完成的字典理解在每个字典键对打印后插入新行?