cycle-length
Question
Given the head of a linked list, return the length of the cycle. If there is no cycle, return null.
input:
graph LR;
1-->3;
3-->2;
2-->4;
4-->3;
Output:
output:3
Solution
To solve this we can use similar approach as the first cycle problem, Once we have reached a point where we have found a cycle, we can call a function which then goes through the list from the point the cycle was found to find the length of our cycle in our list.
Javascript
var lengthCycle = function (head) {
let p1 = head,
p2 = head;
while (p2 !== null && p2.next.next !== null) {
p2 = p2.next.next;
p1 = p1.next;
if (p1 === p2) {
return help(p2);
}
}
return null;
};
const help = (p2) => {
let count = 0,
p1 = p2;
while (p1 !== null) {
p1 = p1.next;
count++;
if (p2 === p1) {
break;
}
}
return count;
};
Java
Concepts
Patterns
- Fast & Slow Pointers