Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

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


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

Vì vậy, nếu đầu vào là relations = [[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 ta sẽ làm theo các bước sau:

  • ans := một set mới

  • seen := một set mới

  • với mỗi cặp a và b trong relations, thực hiện

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

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

      • thêm b và a vào ans

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

Ví dụ

Hãy xem 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]