Advertisement

快慢指针-相遇问题

阅读量:

一、题目描述

判断某一链表是否存在循环结构,若检测到环状连接则返回 true,反之则返回 false。

二、题意理解与解析

此情形可类比为“追击”问题,若链表中存在环路,则速度较快的指针必然能够追及速度较慢的指针。

快慢指针法
在对链表进行遍历操作时,我们设置两个指针,分别为快指针与慢指针。其中,快指针每次移动两个节点,而慢指针每次仅移动一个节点。若这两个指针在链表中再次相遇,则可以判定该链表具有环状结构。

在这里插入图片描述

三、Choose 数据结构及算法思维选择

数据结构:仅需引入slow和fast两个变量即可完成定义

算法思维:采用遍历方式,通过设置快慢指针,其中fast与slow两个变量即代表该类指针

四、Code 最优解思路及编码实现

  1. 初始化两个指针,分别用于追踪链表中的慢速与快速节点:
    slow=head; fast=head.next;

  2. 开始对链表进行遍历操作:
    快速指针每次移动两个节点:fast=fast.next.next;
    慢速指针每次移动一个节点:slow=slow.nex

全部评论 (0)

还没有任何评论哟~