在解答链表相关题目的时候,快慢指针法是一个经常被采用的方法,比如判断链表是否有环,选取链表的中点等等,但是在快慢指针方法中,给快指针赋值不同的值是有不同的影响!!!
- let fast = head;在初始化的时候,让fast指针指向第一个节点head。 这种情况下,循环到最后:链表长度奇数,slow指针指向中点,fast指向最后一个节点;链表长度偶数,slow指针指向中偏右节点,fast指向null
应用场景例题:leetcode-cn.com/problems/co…
let slow = head;
let fast = head;
while (fast && fast.next) {
slow = slow.next;
fast = fast.next.next;
}
- let fast = head.next;在初始化的时候,让fast指针指向第二个节点head.next。 这种情况下,循环到最后:链表长度奇数,slow指针指向中点,fast指向null;链表长度偶数,slow指针指向中偏左节点,fast指向最后一个节点
应用场景例题:leetcode-cn.com/problems/re…
let slow = head;
let fast = head.next;
while (fast && fast.next) {
slow = slow.next;
fast = fast.next.next;
}