मान लीजिए हमारे पास संख्याओं की एक सूची A है और एक अन्य संख्या k है। हमें संभावित तत्वों का एक नया सेट {A[k], A[A[k]], A[A[A[k]]], ...} बनाना है, जो इंडेक्स आउट होने से पहले रुक जाता है। हमें इस सेट का आकार ढूंढना है, अन्यथा -1 जब कोई साइकिल हो।
उदाहरण के लिए, यदि इनपुट A = [1,2,3,4,5,6,7], k = 1 है, तो आउटपुट 6 होगा क्योंकि A[1] = 2, A[2] = 3, A[3] = 4, A[4] = 5, A[5] = 6, A[6] = 7, इसलिए सेट {2,3,4,5,6,7} है, जिसका आकार 6 है।
इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे:
- seen := एक नया सेट
- जब तक k, A के आकार से कम है, तब तक करें:
- यदि A[k] seen में है, तो -1 वापस करें
- seen में A[k] डालें
- k := A[k]
- seen का आकार वापस करें
उदाहरण
class Solution:
def solve(self, A, k):
seen = set()
while k < len(A):
if A[k] in seen:
return -1
seen.add(A[k])
k = A[k]
return len(seen)
ob = Solution()
print(ob.solve([1,2,3,4,5,6,7], 1))
इनपुट
[1,2,3,4,5,6,7], 1
आउटपुट
6