Fast & Slow Pointer


例1:找一个未知长度的链表的中间节点

Fast & Slow Pointer:指定兩個 pointer - fast 跟 slow,一開始 slow 跟 fast 都指向 head,接下來,在 fast 走到 linked list 的底端前,fast 一次走兩步,slow 一次走一步,當 fast 走到底的時候,slow 就會在中間

例2:判断未知长度的链表是否循环

Fast & Slow Pointer:指定兩個 pointer - fast 跟 slow,一開始 slow 跟 fast 都指向 head,如果 fast 和 slow 相遇则发生循环,否则走到底

例3:重排未知长度的链表

Fast & Slow Pointer:首先找出中间节点,然后再反转后半段,然后再把前半段和反转后的半段交错链接起来