สมมติว่าเรามีรายการตัวเลขที่เรียกว่า 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.
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- เห็นแล้ว :=ชุดใหม่
- ในขณะที่ k <ขนาด A ทำ
- ถ้าเห็น 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