Circular Array Loop LeetCode solution in Python
1class Solution:2def circularArrayLoop(self, nums: List[int]) -> bool:3n = len(nums)4for i in range(n):5seen = set()6minval = float("inf")7maxval = float("-inf")8j = i9while j not in seen:10seen.add(j)11minval = min(minval, nums[j])12maxval = max(maxval, nums[j])13k = 1 + abs(nums[j]) // n14j = (k * n + j + nums[j]) % n15if j == i and len(seen) > 1 and (minval > 0 or maxval < 0):16return True17return False