利用快慢指针方法时,快指针指向不同的值所带来的不同影响

336 阅读1分钟

在解答链表相关题目的时候,快慢指针法是一个经常被采用的方法,比如判断链表是否有环,选取链表的中点等等,但是在快慢指针方法中,给快指针赋值不同的值是有不同的影响!!!

  1. 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;
}

  1. 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;
}