求单链表的中间节点

mac2025-12-06  9

方法:用两个指针,一个慢指针一次走一步,一个快指针每次走两步,当快指针走完时,慢指针所在节点就是中间节点,这个方法只需要遍历一遍单链表,时间复杂度为O(n);

public ListNode middleNode(){ ListNode fast=this.head; ListNode slow=this.head; while(fast!=null&&fast.next!=null){ fast=fast.next.next; slow=slow.next; } return slow; }
最新回复(0)