题目
给定一个链表,判断链表中是否有环。
如图:
image.png
解决方案
利用快慢指针去解决,比如:在操场两个人一起跑步,有快有慢,如果跑到是圈,当到达一定时间,两个人一定会相遇,如果不会相遇 ,肯定跑道不是圆圈
如果有环,就一定会重叠
**
* Definition for singly-linked list.
* class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution {
public boolean hasCycle(ListNode head) {
ListNode fast = head;
ListNode slow = head;
while(fast!=null&&slow!=null&&fast.next!=null){
//快的每次走两步
fast = fast.next.next;
//慢的每次走一步
slow = slow.next;
if(fast==slow){
return true;
}
}
return false;
}
}
网友评论