ধরুন আমাদের কাছে 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}, সেটের আকার হল ৬.
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- দেখেছি :=একটি নতুন সেট
- যখন k
- যদি A[k] দেখা যায়, তাহলে
- রিটার্ন -1
- দেখে A[k] ঢোকান
- k :=A[k]
- যদি A[k] দেখা যায়, তাহলে
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
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