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

题目描述:

给你一个链表,删除链表的倒数第 n个结点,并且返回链表的头结点

输入输出实例:

思路:这道题目我们可以用双指针来做,让first和second指针之间的距离为n+1,然后我们first和second指针都往后移动,这样当first所指的为最后一个节点的后一个(即空节点)的时候,我们的second刚好在倒数第n个节点的前一个节点,然后我们second.next = second.next.next,这样达到去除第n个节点的目的。根据上述思路我们有以下代码:

python 复制代码
# Definition for singly-linked list.
class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

class Solution:
    def removeNthFromEnd(self, head: Optional[ListNode], n: int) -> Optional[ListNode]:
        #创建一个虚拟节点方便处理边界
        dummy = ListNode()
        dummy.next = head
        first = dummy
        second = dummy

        for _ in range(n+1):
            first = first.next
        
        while first:
            first = first.next
            second = second.next

        second.next = second.next.next

        return dummy.next
相关推荐
小王不爱笑13234 分钟前
排序算法 Java
数据结构·算法·排序算法
宸翰1 小时前
Python学习:年轻人的第一个入门Python项目(FastAPI版)
后端·python
AsDuang1 小时前
Python 3.12 MagicMethods - 55 - __irshift__
开发语言·python
不想看见4041 小时前
Power of Four二进制特性--力扣101算法题解笔记
数据结构·算法
y = xⁿ1 小时前
【LeetCodehot100】T23:合并k个升序链表
java·数据结构·链表
DeepModel2 小时前
【概率分布】指数分布(Exponential Distribution)原理、推导与实战
python·算法·概率论
_饭团2 小时前
指针核心知识:5篇系统梳理3
c语言·数据结构·算法·leetcode·面试·学习方法·改行学it
波特率1152002 小时前
miniconda入门使用
python·conda·miniconda·python环境
二闹2 小时前
别再死记硬背了!带你扒开*args和**kwargs的底裤
后端·python
星空露珠2 小时前
又双叒叕统计被炸死的lua脚本
开发语言·数据结构·算法·游戏·lua