Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมนับจำนวนองค์ประกอบที่มีอยู่ในชุดขององค์ประกอบที่มีการจัดทำดัชนีแบบเรียกซ้ำในPython


สมมติว่าเรามีรายการตัวเลขที่เรียกว่า 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]
  • ขนาดผลตอบแทนที่เห็น

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

ตัวอย่าง

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