Linked List Cycle
Description
Given a linked list, determine if it has a cycle in it.
/**
* Definition for ListNode
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution {
/**
* @param head: The first node of linked list.
* @return: True if it has a cycle, or false
*/
public boolean hasCycle(ListNode head) {
// write your code here
if(head == null || head.next == null){
return false ;
}
ListNode slow , fast ;
slow = head ;
fast = head.next ;
while(fast != slow){
if(fast == null || fast.next == null ){
return false ;
}
fast = fast.next.next ;
slow = slow.next ;
}
return true ;
}
}
本文介绍了一种使用快慢指针的方法来判断链表是否存在循环。通过初始化两个指针,一个快指针每次移动两个节点,一个慢指针每次移动一个节点,如果链表存在循环,快慢指针最终会相遇;若快指针到达链表尾部,则说明链表无循环。
373

被折叠的 条评论
为什么被折叠?



