def circularArrayLoop(self, nums: List[int]) -> bool:
visited = [0] * len(nums)
c = 0
for i in range(len(nums)):
if visited[i]:
continue
d = 1 if nums[i]>0 else -1
# d 表示方向
p,nowc = i,c
while nums[p]*d > 0 and visited[p]==0:
# 为零表示从未访问过
c += 1
visited[p] = c
p = (nums[p]+p+len(nums))%(len(nums))
if nums[p]*d > 0 and c>visited[p] and visited[p]>nowc:
# 小于nowc表示是之前的遍历
return True
return False