# Single Cycle Check

![](https://3743232000-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHW2IQuh2PFpWJDvBz2FF%2Fuploads%2Fgit-blob-de7c9ec444d853e90d36cd851eaf4ae9dc999734%2FScreenshot%202023-01-23%20at%2021.05.38.png?alt=media)

* n, 1

```jsx
function hasSingleCycle(arr) {

  const visited = new Set();

  let currentIdx = 0;
  while (true) {
    if(visited.has(currentIdx)) {
      break;  
    }
    visited.add(currentIdx);
    currentIdx += arr[currentIdx];
    currentIdx %= arr.length;
    currentIdx += arr.length;
    currentIdx %= arr.length;
  }

  return visited.size === arr.length && currentIdx === 0;
}

// Do not edit the line below.
exports.hasSingleCycle = hasSingleCycle;
```
