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

力扣_876. 链表的中间结点

力扣_876. 链表的中间结点

给你单链表的头结点 head ,请你找出并返回链表的中间结点。

如果有两个中间结点,则返回第二个中间结点。

输入:head = [1,2,3,4,5]
输出:[3,4,5]
解释:链表只有一个中间结点,值为 3 。

输入:head = [1,2,3,4,5,6]
输出:[4,5,6]
解释:该链表有两个中间结点,值分别为 3 和 4 ,返回第二个结点。

思路是遍历两次链表,第一遍用来统计链表长度size,对长度模运算判断是否为奇偶数后,第二遍遍历链表取中间结点;一开始还对使用了if判断,想着偶数的话节点取size/2+1,奇数节点取size/2,后来发现直接取size/2就行啦。

/**
 * 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 middleNode(ListNode head) {
        int size = 0;
        ListNode current = head;
        while (current != null) {
            size++;
            current = current.next;
        }
        int index = size / 2;
        ListNode cur = head;
        // 获取链表中某个位置的元素
        for (int i = 1; i <= index; i++) {
            cur = cur.next;
        }
        return cur;
    }
}

看了题解后发现还是快慢指针法牛,一开始还不明白为什么当快指针到达链表的末尾时,慢指针正好指向链表的中间节点。ai了一下懂了,假设链表的长度为 n。我们从头开始,快慢指针都指向链表的第一个节点。快指针的移动速度比慢指针快,因此,快指针的每一步移动相当于慢指针的两步。当快指针走到链表的末尾时,它已经走过了大约 n 步。慢指针每次只走一步,所以它的移动速度相对较慢。由于快指针走得更快,当快指针走到链表的末尾时,慢指针实际上已经走过了 n/2 步。在这段过程中,慢指针每次走一步,它会在快指针走 n 步时,正好走过 n/2 步。妙蛙种子!


http://www.kler.cn/a/417233.html

相关文章:

  • 使用easyexcel导出复杂模板,同时使用bean,map,list填充
  • React进阶面试题(四)
  • C# 索引器 详解(含对照例子)
  • 基于云模型和遗传算法的建设工程风险决策多目标优化研究
  • 阅读方法论
  • 曲面单值化定理
  • UE5 打包报错 Unknown structure 的解决方法
  • 入门产品经理,考PMP还是NPDP?
  • 在windows上安装sqlite
  • ENSP IPV6-over-IPV4
  • windows11 使用体验记录
  • webpack(react)基本构建
  • 实习冲刺第三十六天
  • 【React】React 组件通信:多种方式与最佳实践
  • shodan2-批量查找CVE-2019-0708漏洞
  • OceanBase数据库系列之:基于docker快速安装OceanBase数据库,基于linux服务器快速部署OceanBase数据库
  • 2025年Java面试八股文大全
  • 非线性模型预测控制(NMPC)算法及其Python实现
  • OpenCV 模板匹配全解析:从单模板到多模板的实战指南
  • Keil 5, Flash Timeout. Reset the Target and try it again.
  • Spire.PDF for .NET【页面设置】演示:旋转 PDF 中的页面
  • Docker化部署Django:高效、可扩展的Web应用部署策略
  • 有效判断住宅IP与机房IP的方法
  • 数据并行、模型并行与张量并行:深度学习中的并行计算策略(中英双语)
  • 试题转excel;试题整理工具;试卷转excel;word转excel
  • 外卖开发(二)开发笔记