题目:判断给定的链表中是否有环
思路:设置快慢指针,刚开始快慢指针同时指向某一个节点,然后进行next,当快慢指针再次相遇的时候,说明该链表有环。
代码:
package com.company;
public class TestNo26 {
static class ListNode{
int val;
ListNode next;
ListNode(int x){
val = x;
next = null;
}
}
public static void main(String[] args) {
ListNode head = new ListNode(3);
head.next = new ListNode(4);
head.next.next = new ListNode(7);
head.next.next.next = new ListNode(6);
head.next.next.next.next = head;
TestNo26 t = new TestNo26();
System.out.println(t.hasCycle(head));
}
public boolean hasCycle(ListNode head) {
//快指针
ListNode fast = head;
//慢指针
ListNode slow = head;
while (fast != null && slow != null){
fast = fast.next.next;
slow = slow.next;
//当快指针与慢指针相遇的时候,则有环。
if(fast == slow){
return true;
}
}
return false;
}
}