题解 | #判断链表中是否有环#
判断链表中是否有环
https://www.nowcoder.com/practice/650474f313294468a4ded3ce0f7898b9
/** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */ /**首先要搞清楚什么是快慢指针,其实在中国,话只是用来交流的,没必要死扣字眼,快慢指针就是一个典型的代表,对于这道你只需要知道,快指针一下子踏两步,慢指针一下踏1步即可 1.我们还是先考虑某些特殊情况,比如这个链表为空,那么就无需判断了 2.创建快慢指针,起始位置都是头节点 3.使用循环遍历节点,书写快慢指针的逻辑,若快慢指针所指向的节点在某一时刻相同,那么就证明他是环形的链表结构 */ public class Solution { public boolean hasCycle(ListNode head) { if(head == null){ return false; } //---------------------------------以上第一部分----------------------------------------- ListNode slow = head; ListNode fast = head; //---------------------------------以上第二部分----------------------------------------- while(fast != null && fast.next != null){ slow = slow.next; fast = fast.next.next; if(slow == fast){ return true; } } //---------------------------------以上第三部分----------------------------------------- return false; //此处返回false是为了表示上面的循环结果并不是true,也就是非循环链表 } }#链表类型#