删除链表倒数第N个节点

Leetcode(19):

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

分析:

首要目标就是找到第N个节点的前一个节点,因为只有通过这个节点(cur)才可进行对第N个节点进行删除操作,即cur->next=cur->next->next;但是要是找到第N个节点不是很容易,可以使用便捷方法------快慢指针,使用时要考虑一点如何找到第N个节点的前一个节点,即将N+1,这样就可实现。

代码:

cpp 复制代码
class Solution {
public:
    ListNode* removeNthFromEnd(ListNode* head, int n) {
        ListNode*dummyHead=new ListNode(0);
        dummyHead->next=head;
        ListNode*fast=dummyHead;
        ListNode*slow=dummyHead;
        n++;//进行+1操作,找到前一节点
        while(n--&&fast!=nullptr){
            fast=fast->next;
        }
        while(fast!=nullptr){
            fast=fast->next;
            slow=slow->next;
        }
        slow->next=slow->next->next;
        return dummyHead->next;
    }
};
相关推荐
阿昭L8 小时前
leetcode链表相交
算法·leetcode·链表
xiaolang_8616_wjl13 小时前
c++超级细致的基本框架
开发语言·数据结构·c++·算法
LYFlied14 小时前
【每日算法】LeetCode124. 二叉树中的最大路径和
数据结构·算法·leetcode·面试·职场和发展
yyy(十一月限定版)15 小时前
c语言——栈和队列
java·开发语言·数据结构
xu_yule15 小时前
算法基础-背包问题(01背包问题)
数据结构·c++·算法·01背包
蒙奇D索大16 小时前
【数据结构】考研408 | 伪随机探测与双重散列精讲:散列的艺术与均衡之道
数据结构·笔记·学习·考研
budingxiaomoli16 小时前
分治算法-快排
数据结构·算法
dragoooon3416 小时前
[C++——lesson30.数据结构进阶——「红黑树」]
开发语言·数据结构·c++
蓝色汪洋17 小时前
数码串和oj
数据结构·算法
阿昭L18 小时前
leetcode链表是否有环
算法·leetcode·链表