Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình tìm những người theo dõi lẫn nhau từ danh sách quan hệ bằng Python

Giả sử chúng ta có một danh sách được gọi là quan hệ. Trong đó mỗi phần tử trong danh sách quan hệ quan hệ [i] chứa hai số [ai, bi] nó cho biết ai đang theo dõi bi trên nền tảng truyền thông xã hội. Chúng tôi phải tìm danh sách những người theo dõi ai đó và họ theo dõi lại họ, chúng tôi phải trả lại danh sách đó theo trình tự được sắp xếp.

Vì vậy, nếu đầu vào giống như quan hệ =[[0, 2], [2, 3], [2, 0], [1, 0]], thì đầu ra sẽ là [0, 2].

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • ans:=một tập hợp mới

  • đã thấy:=một tập hợp mới

  • đối với mỗi cặp a và b trong quan hệ, hãy thực hiện

    • đánh dấu cặp (a, b) như đã thấy

    • nếu (b, a) cũng được đánh dấu là đã thấy, thì

      • chèn b và a vào

  • sắp xếp các phần tử của ans và trả về

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn

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))

Đầu vào

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

Đầu ra

[0, 2]