사이클을 도는 linked list면 true, 사이클을 돌지 않는 linked list면 false를 반환한다. (pos는 tail이 가리키고있는 인자의 index값이다.)
토끼와 거북이 알고리즘
/**
* Definition for singly-linked list.
* function ListNode(val) {
* this.val = val;
* this.next = null;
* }
*/
/**
* @param {ListNode} head
* @return {boolean}
*/
var hasCycle = function(head) {
if (!head) return false;
let slow = head;
let fast = head;
while (fast && fast.next) {
slow = slow.next;
fast = fast.next.next;
if (slow === fast) {
return true;
}
}
return false;
};
fast와 slow를 찍으면
Error - Found cycle in the ListNode Error - Found cycle in the ListNode
콘솔에 이런 에러가 뜬다. 근데 slow.val, fast.val로 비교하기에는 값은 다른 index에 있는 값이라도 같을 수 있어서 slow.val, fast.val를 비교하는건 안되는데 저거 두개는 왜 콘솔 찍으면 에러나오고 실행은 됨? 뭐지...