首页 > 解决方案 > 反转链表(迭代方法)

问题描述

我正在编写用于在 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

两者有什么区别?

标签: pythonlinked-list

解决方案


在您展开的代码中,当您到达最后一行时,curr.next已被覆盖prev。它不再具有原来的价值。两者都prevcurr指向旧的prev


推荐阅读