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]