Java 详解分析链表的中间节点

网友投稿 264 2022-09-01


Java 详解分析链表的中间节点

目录1.题目描述2.解法3.复杂度

1.题目描述

给定一个头结点为 head 的非空单链表,返回链表的中间结点。

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

题目来源:力扣(LeetCode)

2.解法

定义一个快指针 fast 和一个慢指针 slow ;fast 走两步, slow 走一步,当 fas t走到尽头时,

slohttp://w 就刚好在中间节点。因为 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;

}

frbqNyvap return slow;

}

}

3.复杂度

复杂度分析

时间复杂度:O(N),http://其中 N 是给定链表的结点数目。

空间复杂度:O(1),只需要常数空间存放 slow 和 fast 两个指针


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:python之time(PYTHoN)
下一篇:python之编辑器pycharm(python好用的编辑器)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~