public class ListNode {
int val;
ListNode next;
public ListNode(int val) {
this.val = val;
}
}
//10.给定一个链表,判断链表中是否有环。
/*基本思路:快慢指针:快指针一次走两步,慢指针一次走一步
1.如果链表不带环,快指针一定先到达末尾;如果链表带环,快指针一定会和慢指针重合。
2.在使用快慢指针时:如果快慢指针的速度差值是1,可以重合,否则就不行。
* */
public boolean hasCycle(ListNode head) {
if (head == null){
return false;
}
//创建快慢指针
ListNode fast = head;
ListNode slow = head;
while (fast != null && fast.next != null){
//快指针走两步
fast = fast.next.next;
//慢指针走一步
slow = slow.next;
if (fast == slow){
return true;
}
}
return false;
}
给定一个链表,判断链表中是否有环。
最新推荐文章于 2020-09-24 08:11:35 发布