题解 | #删除链表的倒数第n个节点#

删除链表的倒数第n个节点

https://www.nowcoder.com/practice/f95dcdafbde44b22a6d741baf71653f6

# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param head ListNode类 
# @param n int整型 
# @return ListNode类
#
class Solution:
    def removeNthFromEnd(self , head: ListNode, n: int) -> ListNode:
        # write code here
        #当快指针指向空节点,就可以把慢指针指向的节点删除,再返回头节点
        if not head:#先判断链表是否为空
            return None#为空返回None
        slow=head
        fast=head
        for i in range(0,n):
            fast=fast.next#让fast先向前移动n个节点
        #此时,fast 和 slow 之间间隔了 n-1 个节点,即 fast 比 slow 超前了 n 个节点。
        # 判断n是否大于head的长度
        if not fast:#如果链表长度<=n,则链表中只有一个节点,直接返回头节点
            return head.next
        while fast.next:#如果链表长度>n,则slow、fast继续向前走
            fast=fast.next
            slow=slow.next
        slow.next=slow.next.next
        return head

注意特殊条件

全部评论

相关推荐

11-29 11:21
门头沟学院 Java
点赞 评论 收藏
分享
10-15 16:27
门头沟学院 C++
LeoMoon:建议问一下是不是你给他付钱😅😅
点赞 评论 收藏
分享
Noob1024:一笔传三代,人走笔还在
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务