Java 详解分析链表的中间节点
1.题目描述
给定一个头结点为 head
的非空单链表,返回链表的中间结点。
如果有两个中间结点,则返回第二个中间结点。
题目来源:力扣(LeetCode)
2.解法
定义一个快指针 fast 和一个慢指针 slow ;fast 走两步, slow 走一步,当 fas t走到尽头时,
slow 就刚好在中间节点。因为 fast 比slow 多走一半路程
class Solution { public ListNode middleNode(ListNode head) { if (head == null) { return null; } ListNode fast = head; ListNode slow = head; while (fast != null && fast.next != null) { fast = fast.next.next; slow = slow.next; } return slow; } }
3.复杂度
复杂度分析
时间复杂度:O(N),其中 N 是给定链表的结点数目。
空间复杂度:O(1),只需要常数空间存放 slow 和 fast 两个指针
到此这篇关于Java 详解分析链表的中间节点的文章就介绍到这了,更多相关Java 链表的中间节点内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Java源码解析之HashMap的put、resize方法详解
这篇文章主要介绍了Java源码解析之HashMap的put、resize方法详解,文中有非常详细的代码示例,对正在学习java的小伙伴们有很大的帮助,需要的朋友可以参考下2021-04-04零基础学Java:Java开发工具 Eclipse 安装过程创建第一个Java项目及Eclipse的一些基础使用技巧
这篇文章主要介绍了零基础学Java:Java开发工具 Eclipse 安装过程创建第一个Java项目及Eclipse的一些基础使用技巧,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-09-09
最新评论