删除链表的中间节点

题目链接

删除链表的中间节点

题目描述


注意点

  • 链表中节点的数目在范围 [1, 100000] 内

解答思路

  • 快慢指针找到链表中间节点的前一个节点,慢指针每次跳一格,快指针每次跳两格,当快指针跳到链表末尾时,此时慢指针刚好到链表的中间节点。为了方便找到中间节点的前一个节点,慢指针的初始位置在链表的第一个节点,快指针的初始位置设置在链表的第二个节点

代码

/**
 * 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 deleteMiddle(ListNode head) {
        if (head == null || head.next == null) {
            return null;
        }
        // 找到中间节点的前一个节点
        ListNode slow = head;
        ListNode quick = head.next;
        while (quick.next != null && quick.next.next != null) {
            slow = slow.next;
            quick = quick.next.next;
        }
        slow.next = slow.next.next;
        return head;
    }
}

关键点

  • 双指针的思想

相关推荐

  1. 删除重复节点

    2024-04-21 11:16:03       40 阅读

最近更新

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

    2024-04-21 11:16:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-21 11:16:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-21 11:16:03       82 阅读
  4. Python语言-面向对象

    2024-04-21 11:16:03       91 阅读

热门阅读

  1. grep常规用法整理【ing】

    2024-04-21 11:16:03       34 阅读
  2. 【计算机网络】面经

    2024-04-21 11:16:03       38 阅读
  3. 如何使用Python进行Web开发,如Flask或Django?

    2024-04-21 11:16:03       37 阅读
  4. 华为海思数字芯片设计笔试第八套

    2024-04-21 11:16:03       28 阅读
  5. LlamaIndex 组件 - Prompts

    2024-04-21 11:16:03       49 阅读
  6. 汽车牌照-C++

    2024-04-21 11:16:03       26 阅读
  7. 什么是Transformer架构的自注意力机制?

    2024-04-21 11:16:03       37 阅读
  8. HTML5声明与编码设置

    2024-04-21 11:16:03       35 阅读