leetcode

简单链表双指针

方法1 快慢指针

  1. var middleNode = function(head) {
  2. let slow = fast = head;
  3. while (fast && fast.next) {
  4. slow = slow.next;
  5. fast = fast.next.next;
  6. }
  7. return slow;
  8. };

image.png

876. 链表的中间结点 - 图2

注解
慢指针每次走一步
快指针每次走两步
结束条件:

  • 快指针指向的成员是 null;
  • 或者快指针指向的成员指向 null;

返回:慢指针

方法2 xxx