问题描述

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

示例:

给定一个链表: 1->2->3->4->5, 和 n = 2.
当删除了倒数第二个节点后,链表变为 1->2->3->5.

说明:

给定的 n 保证是有效的。

进阶:

你能尝试使用一趟扫描实现吗?

解法

双指针,当遍历指针前进n个时,后面一个指针指向头部,这样保证了当遍历指针到达尾部时,后面一个指针在倒数第n个上,但是因为我们需要的是倒数第n个指针的前一个指针。所以我们再多等一次。但是这个时候就会出现边界性的问题,如果倒数第n个指针是头指针的下一个指针,但我们此时还没有后一个指针(q.next= =null跳出),所以head.next=head.next.next(n= =0)(此时q就是head);如果仅有一个数,即删除头指针时,head=head.next(q.next== null,n > 0)。

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode(int x) { val = x; }* }*/
class Solution {public ListNode removeNthFromEnd(ListNode head, int n) {ListNode q=head;ListNode p=null;while(q.next!=null){if(n>0){q=q.next;n--;}else if(n==0){p=head;n--;}else{p=p.next;q=q.next;}} if(n>0){head=head.next;}else if(n==0){head.next=head.next.next;}else{p.next=p.next.next;}return head;}
}

结果

Leetcode之删除链表的倒数第N个节点相关推荐

  1. [链表|多解法] leetcode 19 删除链表的倒数第N个节点

    [链表|多解法] leetcode 19 删除链表的倒数第N个节点 1.题目 题目链接 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1->2-&g ...

  2. 【亡羊补牢】挑战数据结构与算法 第59期 LeetCode 19. 删除链表的倒数第N个节点(链表)

    仰望星空的人,不应该被嘲笑 题目描述 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. ...

  3. leetcode 19. 删除链表的倒数第N个节点(双指针)

    给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 ...

  4. leetcode —— 19. 删除链表的倒数第N个节点

    给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 ...

  5. 领扣(LeetCode)删除链表的倒数第N个节点 个人题解

    给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1 ...

  6. [leetcode]19.删除链表的倒数第N个节点

    给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点. 进阶:你能尝试使用一趟扫描实现吗? 示例 1: 输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5] ...

  7. LeetCode 19删除链表的倒数第N个节点-中等

    给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点. 进阶:你能尝试使用一趟扫描实现吗? 输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5] 示例 2: ...

  8. Leetcode 19. 删除链表的倒数第N个节点

    原题链接 解法:双指针 思路:第一个点可以能被删除,所以需要一个虚拟头节点.被删除的点位于倒数第n的位置,因为是单链表,即找到倒数n + 1最后,想要删除这个节点必须要保留它的前一个节点使其p-> ...

  9. C++ leetcode 19. 删除链表的倒数第N个节点 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。

    一.思路: 遍历一遍存储节点到vector数组中,然后利用数组指向倒数第n个,将倒数n-1的节点的next指向倒数n的next 二.代码: class Solution { public:ListNo ...

  10. 刻意练习:LeetCode实战 -- Task11. 删除链表的倒数第N个节点

    背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法(Leetcode)刻意练习训练营 的打卡任务.本期训练营采用分类别练习的模式,即选择了五个知识点(数组.链表.字符串.树.贪心算法),每个知 ...

最新文章

  1. 【pytorch】torch.nn.functional.pad的使用
  2. VMware Workstation 与 Device/Credential Guard 不兼容
  3. 一季度手机出货量少了2800万部,有人要给「指条明路」
  4. Mysql —— C语言链接mysql数据库,用户 角色 权限(用户根据角色的不同拥有增删改查的权限、用户有三种认证方式)
  5. Windows Embedded从入门到精通4月预告
  6. 一个故事 让你看懂“区块链”
  7. jdbc连接gp单例模式_JDBC连接备忘单
  8. win10调节屏幕亮度_自动调节电脑屏幕亮度软件,保护你的眼睛
  9. java web排序商城_JavaWeb网上商城的反思
  10. SQL Server 数据库的创建
  11. Fences中关于Explorer非正常关闭问题
  12. 基于WebUploader、SpringMVC的断点续传
  13. 防雷击和浪涌电路设计以及放电管、压敏电阻、TVS管对比
  14. 啊哈算法之水管工游戏
  15. easyexcel导出图片到具体excel具体位置并设置大小
  16. SaltStacks三:写法和高级状态
  17. 小程序setData执行后,页面没有刷新
  18. 【C语言】模拟简单的《掘地求生Getting Over It》(源码)
  19. 大数据时代,隐私不能粗放管理
  20. php7随机数random_int()

热门文章

  1. Linux命令_搜索文件
  2. linux UVC and hardware viewer
  3. LoaderManager使用具体解释(四)---实例:AppListLoader
  4. Spark分布式安装
  5. Android短信页面
  6. WEB系统技术开发方向
  7. POJ 3274 Gold Balanced Lineup 哈希,查重 难度:3
  8. 图像放缩中最近邻插值和双线性插值的基本原理
  9. c html 转 pdf,HTML 转 PDF
  10. html修改列表内的audio样式,如何修改H5中的audio样式