手撕算法-删除链表的倒数第 N 个结点

描述

image.png

思路

快慢指针,快指针先走N步,走不够N步返回空。
慢指针和快指针一起走,当快指针到达终点,即快指针为null时,慢指针到达倒数第N个节点。
因为要删除倒数第N个,所以要记录之前的节点pre,假设倒数第N个节点为cur,删除操作即为:
pre.next = cur.next;
cur.next = null;

因为要返回删除后的头结点,所以假设一个虚拟头结点P,P.next = head;
初始时:pre = P,cur = pre.next;

最后返回P.next;

代码

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

        ListNode p = new ListNode();
        p.next = head;

        ListNode pre = p;
        ListNode cur = p.next;

        while(fast != null) {
            pre = pre.next;
            cur = cur.next;

            fast = fast.next;
        }

        pre.next = cur.next;
        cur.next = null;

        return p.next;
    }
}

image.png

面试公司

阿里

相关推荐

  1. 算法删除倒数 N

    2024-03-24 23:52:02       26 阅读
  2. leetcode19. 删除倒数 N

    2024-03-24 23:52:02       51 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-24 23:52:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-24 23:52:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-24 23:52:02       87 阅读
  4. Python语言-面向对象

    2024-03-24 23:52:02       96 阅读

热门阅读

  1. 01-Pandas的方法介绍

    2024-03-24 23:52:02       39 阅读
  2. 定义了服务器的端口号和Servlet的上下文路径

    2024-03-24 23:52:02       47 阅读
  3. OpenCV支持哪些类型的文件格式读写?

    2024-03-24 23:52:02       41 阅读
  4. 周报_第四十六周

    2024-03-24 23:52:02       39 阅读
  5. Spring Cloud微服务功能及其组件详细讲解

    2024-03-24 23:52:02       34 阅读
  6. ES6—运算符的扩展

    2024-03-24 23:52:02       34 阅读
  7. python 模块与包

    2024-03-24 23:52:02       39 阅读
  8. 日期时间api

    2024-03-24 23:52:02       38 阅读
  9. 100个shell常用命令

    2024-03-24 23:52:02       44 阅读
  10. 突破编程_C++_面试(STL 编程 stack)

    2024-03-24 23:52:02       42 阅读
  11. Mybatis

    Mybatis

    2024-03-24 23:52:02      32 阅读
  12. docker部署服务无法自动注册xxl-job问题排查和解决

    2024-03-24 23:52:02       41 阅读