题解 | #反转链表#

反转链表

https://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca

# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param head ListNode类 
# @return ListNode类
#
class Solution:
    def ReverseList(self , head: ListNode) -> ListNode:
        # write code here
        #if not head:
        #    return []
        
        if head is None or head.next is None:
            return head

        p = None
        while head:
            temp = head.next
            head.next = p
            p = head
            head = temp

        return p

加入判断是否为ListNode的时候(以下语句),测试空链表的时候会出错。

if not head:
    return []

题目要求时间O(n),故只能单循环;空间O(1),故不能出现数组/链表/栈,只能单变量。

这道题对head.next的变换比较难处理,题目变式多,容易混淆出错,可以跟多类同题型比较、区分。

全部评论
p:首先作为上一个节点指针,用于断链和改变方向(head.next赋值);接着用于承接本节点,遍历链的同时追溯到尾节点作为头节点。 temp:用于固定下一个节点(head.next),以便断链后还找到剩下的链。 head:首先作为本节点遍历,接着定位下一个节点为本节点,以遍历全链。
点赞 回复 分享
发布于 2023-06-30 14:40 广东
ref: https://blog.csdn.net/EMIvv/article/details/122270245
点赞 回复 分享
发布于 2023-06-30 14:41 广东

相关推荐

头像
11-09 12:17
清华大学 C++
out11Man:小丑罢了,不用理会
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务