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

โปรแกรมค้นหาผู้ติดตามร่วมกันจากรายการความสัมพันธ์ใน Python


สมมติว่าเรามีรายการที่เรียกว่าความสัมพันธ์ โดยที่แต่ละองค์ประกอบในความสัมพันธ์ของรายการความสัมพันธ์ [i] มีตัวเลขสองตัว [ai, bi] แสดงว่าบุคคล ai กำลังติดตาม bi บนแพลตฟอร์มโซเชียลมีเดีย เราต้องหารายชื่อคนที่ตามใครแล้วตามกลับ เราต้องเรียงลำดับกลับตามลำดับ

ดังนั้น หากอินพุตเป็นเหมือนความสัมพันธ์ =[[0, 2],[2, 3],[2, 0],[1, 0]] ผลลัพธ์จะเป็น [0, 2]

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • ตอบ :=ชุดใหม่

  • เห็นแล้ว :=ชุดใหม่

  • สำหรับแต่ละคู่ a และ b ในความสัมพันธ์ ทำ

    • ทำเครื่องหมายคู่ (a, b) ตามที่เห็น

    • ถ้า (b, a) ถูกทำเครื่องหมายว่าเห็นด้วยแล้ว

      • ใส่ b และ a เข้าไป

  • จัดเรียงองค์ประกอบของ ans และส่งคืน

ตัวอย่าง

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

def solve(relations):
   ans = set()
   seen = set()

   for a, b in relations:
      seen.add((a, b))

      if (b, a) in seen:
         ans.add(b)
         ans.add(a)

   k = list(ans)
   rtr = sorted(k)
   return rtr

relations = [
   [0, 2],
   [2, 3],
   [2, 0],
   [1, 0]
]
print(solve(relations))

อินพุต

[[0, 2],[2, 3],[2, 0],[1, 0]]

ผลลัพธ์

[0, 2]