
找到单向链表的中间位置
思路:
双指针。一个快指针,一个慢指针
fast每次走两步,slow每次走一步
一直走到fast到达null
注意:fast.next.next时要注意fast.next也不能为null
public ListNode middleNode(ListNode head) {
ListNode slow = head;
ListNode fast = head;
while(fast != null && fast.next != null) {
fast = fast.next.next;
slow = slow.next;
}
return slow;
}
这篇博客介绍了如何通过双指针技术来找到单向链表的中间节点。算法思路是设置一个快指针每次前进两步,慢指针每次前进一步,当快指针无法继续前进时,慢指针就位于链表的中间位置。这种方法适用于非空且长度为奇数的链表,对于偶数长度的链表,慢指针将停在中间两个节点之一。
1571

被折叠的 条评论
为什么被折叠?



