Advertisement

数据结构面试题:如何检测环形链表是否存在循环及其入口?

阅读量:

题目描述:

判断一个链表中是否有环,有则找出环的入口节点

LeetCode练习题页面:https://leetcode-cn.com/problems/linked-list-cycle-ii/description/

题目分析:

判断环形链表的可能情况有以下三种:

在这里插入图片描述

基本思路:

通过题目可知该链表属于单向非循环结构,在实现过程中我们通常采用快慢指针技术具体来说我们可以设置两个指针结点(fast,slow)并令其初始位置均指向该链表的第一个节点随后让fast移动两位而让slow仅移动一位如此一来当出现循环结构时 fast与slow必定会在某一点相遇直至两者最终会在某一点相遇;特别地在这个问题中我们假设该单向非循环结构不会出现尾部指向空的情况

1.是否有环?

设定两个指针进行比较。

快指针每次移动两格时,

慢指针移动一格。

若相遇,

则说明链表存在环。

当链表为空或者仅含有一个节点时,

则说明链表无环。

实现代码:

复制代码
    boolean ha

全部评论 (0)

还没有任何评论哟~