题解 | #反转链表#

反转链表

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的变换比较难处理,题目变式多,容易混淆出错,可以跟多类同题型比较、区分。

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

相关推荐

点赞 评论 收藏
分享
03-30 21:02
已编辑
武汉大学 Java
ALEX_BLX:虽然说聊天记录不可信,不过这个趋势确实如此但我觉得也要想到一点就是卷后端的人里真正有“料”的人又有多少,我说的这个料都不是说一定要到大佬那种级别,而是就一个正常的水平。即使是现在也有很多人是跟风转码的,2-3个月速成后端技术栈的人数不胜数,但今时不同往日没可能靠速成进大厂了。这种情况就跟考研一样,你能上考场就已经打败一半的人了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务