public ListNode detectCycle(ListNode head){
	ListNode fast = head;
	ListNode slow = head;
	if(head == null || (head != null &&  head.next == null)){
	    return null;
	}
	while(fast != null && fast.next != null){
	    fast = fast.next.next;
	    slow = slow.next;
	    if(fast == slow){
		break;
	    }
	    
	}
	
	if(fast == null || fast.next == null){
	    return null;
	    
	}
	fast = head;
	while(fast != slow){
	    fast = fast.next;
	    slow = slow.next;
	}
	return slow;
	/*
	  test color
	 */
	
    }