0
点赞
收藏
分享

微信扫一扫

数据结构和算法-2023.07.06


快慢指针

  今天没什么废话直接上代码,

给你一个链表的头节点 head ,判断链表中是否有环。


如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递 。仅仅是为了标识链表的实际情况。


如果链表中存在环 ,则返回 true 。否则,返回 false 。


输入:head = [3,2,0,-4], pos = 1
输出:true
解释:链表中有一个环,其尾部连接到第二个节点。

这个题在进行做的时候,需要将对应的快指针和对应的慢指针概念相结合,这是什么意思呢,就是在进销快指针往前走的时候,需要将对应的判断对应的快指针走的时候,是否进行走到的了null,如果走到了null,则就是和慢指针灭有相撞,那就是证明没有环,就是无环路的链表,相反如果撞到了一起,那就是证明快和慢的都是有环路了,那就可以反会当前的链表是有环链表,判断当前的链表状态是又环还是无环,用快慢指针,在进行解决的时候,可以很好的进行解决掉,整体来说是非常容易和快捷的简单的。在进行操作的时候,可以将快慢指针的操作的步骤进行记录,记录后再将对应的数据进行操作,然后在进行条件判断循环的时候,只要判断出当前的快指针为空,或者快指针的下一个为空,则就直接跳出循环就可与了。

public class Solution {

    public boolean hasCycle(ListNode head) {

            if(head == null ||head.next ==nullreturn false ;

            ListNode solw =head;

            ListNode faslt =head.next;


            while(faslt !=null &&faslt.next !=null) {

                if(solw == faslt) return true ;

                solw= solw.next;

                faslt= faslt.next.next;

            }


            return false ;

    }

}

举报

相关推荐

0 条评论