来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list

题目描述

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

示例 1:

输入:head = [1,2,3,4,5], n = 2
输出:[1,2,3,5]

示例 2:

输入:head = [1], n = 1
输出:[]

示例 3:

输入:head = [1,2], n = 1
输出:[1]

解题思路

题目关键是找到倒数第n个结点,这里可以用双指针法,让指针p线走n-1步,然后指针q再行动,这样,指针p走到结尾的时候,指针q总会走到倒数第n个结点,同时用指针l来记录倒数第n-1个结点方便删除后重新连接链表。

代码展示

/**
* 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 *p = head, *q = head, *l = head;
while(p->next != NULL)
{
p = p->next;
n--;
if(n <= 0)
{
l = q;
q = q->next;
}
}
if(q == head)
{
head = q->next;
}
else
{
l->next = q->next;
} delete q;
return head;
}
};

运行结果

最新文章

  1. .Net开源Excel、Word操作组件-NPOI、EPPlus、DocX
  2. [Project Name] was compiled with optimization - stepping may behave oddly; variables may not be available.
  3. python黑客编程之端口爆破
  4. sqoop的export的说明
  5. JAVA jdbc(数据库连接池)学习笔记(二) SQL注入
  6. js、expression表达式解析
  7. Android 生成含签名文件的apk安装包
  8. C#实现数据结构——线性表(上)
  9. 从一个非开发人员转行silverlight满一年的工作总结(第一次发帖)
  10. 发布时去掉 debug 和 提醒日志,简单无侵入
  11. linux系统基础优化16条知识汇总
  12. Vue(day3)
  13. selenium切换窗口后定位元素出现问题的解决方案
  14. Python爬虫的步骤和工具
  15. cdnbest常见问题
  16. 【转载】使用Jquery操作Cookie对象
  17. B. School Marks(典型贪心)
  18. js算法初窥07(算法复杂度)
  19. windows下安装apache zookeeper
  20. 用SLF4j/Logback打印日志-3

热门文章

  1. React报错之Function components cannot have string refs
  2. 一文速览 Dubbo 3.0
  3. SpringCloud微服务框架复习笔记
  4. Vue 响应式原理模拟以及最小版本的 Vue的模拟
  5. 几种数据库jar包获取方式
  6. uniapp中请求接口问题
  7. JavaScript:箭头函数:作为参数进行传参
  8. [R语言] 基于R语言实现环状条形图的绘制
  9. JAVA中使用最广泛的本地缓存?Ehcache的自信从何而来 —— 感受来自Ehcache的强大实力
  10. try catch finally,try里有return,finally还执行么?