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
相关推荐
老鱼说AI5 分钟前
算法初级教学第三步:链表
数据结构·算法·链表
CodeByV5 分钟前
【算法题】双指针(一)
数据结构·算法
952366 分钟前
二叉平衡树
java·数据结构·学习·算法
木棉知行者6 分钟前
(二)Python基本语句
开发语言·python
傻啦嘿哟7 分钟前
2026版基于Python的旅游景点推荐系统:技术解析与实现路径
开发语言·python
小陈phd9 分钟前
RAG从入门到精通(十四)——评估技术
人工智能·python
卡次卡次110 分钟前
注意点:多线程与多进程与在并行读-->并行cpu或者GPU处理--->并行写 的架构中,如何选择
linux·网络·python
一晌小贪欢11 分钟前
Python-12 Python生成器与yield:惰性求值的艺术
开发语言·python·python基础·python3·python小白·python生成器
Rock_yzh15 分钟前
LeetCode算法刷题——53. 最大子数组和
java·数据结构·c++·算法·leetcode·职场和发展·动态规划
简单的话*15 分钟前
Logback 日志按月归档并保留 180 天,超期自动清理的配置实践
java·前端·python