当前位置: 首页 > news >正文

力扣HOT100之链表:19. 删除链表的倒数第 N 个结点


这道题的思路比较简单,直接定义一个虚拟头节点,然后再定义快慢指针,快慢指针在初始状态下都指向虚拟头节点,然后让快指针先走n步,慢指针停在原地,然后快慢指针同步前进,当快指针fast指向最后一个节点时,慢指针slow指向待删除的节点的上一个节点,然后直接将待删除节点的后继节点(slow -> next -> next)赋值给slow -> next即可。下面用几个例子说明下这种方法的正确性。
样例1
样例2和样例3

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* removeNthFromEnd(ListNode* head, int n) {
        ListNode* virtual_head = new ListNode();
        virtual_head -> next = head;
        ListNode* fast = virtual_head, * slow = virtual_head;
        while(n--)
            fast = fast -> next;
        while(fast -> next){
            slow = slow -> next;
            fast = fast -> next;
        }
        slow -> next = slow -> next -> next;
        return virtual_head -> next;
    }
};

相关文章:

  • 【MySQL 数据库】数据表的操作
  • 永磁同步电机无速度算法--基于HOPLL的滑模观测器
  • Python设计模式:组合模式
  • JavaScript基础--22-call、apply 和 bind
  • PPP实验笔记
  • C#语言的饼图
  • java.io快读快写StreamTokenizer、PrintWriter
  • 低级错误 System.setProperty 值为空时引发空指针
  • ubuntu,react的学习(1)
  • PandaAI:一个基于AI的对话式数据分析工具
  • 2025 年前端与后端开发方向的抉择与展望-优雅草卓伊凡
  • C++: 类型转换
  • 构建k8s下Helm私有仓库与自定义Chart开发指南
  • Workbench运动副与dyna对应关系(一)
  • Linux 实验
  • SQL并行产生进程数量问题
  • 使用sass 实现px转vh或vw,适配适老化时,在设计图字体大小的基础上,增加3px(可配置),
  • VUE通过ref来获取dom元素及其他属性
  • 【免费】2005-2019年各地级市绿色专利申请量数据
  • Johnson
  • 通用网址通用网站查询/百度下载免费官方安装
  • 长沙seo网站管理/今天上海重大新闻事件
  • 海林建设局网站/杭州优化seo公司
  • 做网站找云无限/网络营销课程个人总结
  • 网站建设 软件有哪些/推广网
  • 西宁高端网站制作公司/百度下载软件