MảngBảng băm
Mô tả
Anh Tư quản trị hệ thống tổng đài Viettel tại một trạm khu vực miền Tây. Mỗi ngày, tổng đài ghi lại log các cuộc gọi đi dưới dạng danh sách số điện thoại (mỗi số là một chuỗi 10 chữ số). Một số thuê bao gọi nhiều lần trong ngày, số khác chỉ gọi một lần. Anh Tư cần lọc ra danh sách các số điện thoại gọi đúng hai lần trong ngày, để kiểm tra xem có thuê bao nào gặp sự cố liên tục hay không. Vì log rất dài, anh cần danh sách kết quả theo thứ tự xuất hiện đầu tiên của từng số trong log.
Đầu vào
- Một danh sách
phonesgồmnphần tử, mỗi phần tử là một chuỗi ký tự biểu diễn số điện thoại (độ dài 10, chỉ chứa chữ số). - Dữ liệu truyền vào hàm ở dạng tham số:
phones.
Đầu ra
- Trả về một danh sách các chuỗi: những số điện thoại xuất hiện đúng 2 lần trong
phones, sắp xếp theo thứ tự xuất hiện đầu tiên trong log.
Ràng buộc
- 1 ≤ n ≤ 10^5
- Mỗi chuỗi có độ dài đúng 10 ký tự, chỉ chứa chữ số '0'–'9'.
- Đảm bảo tổng số lượng số trùng nhau không vượt quá 10^6.
Ví dụ
Ví dụ 1:
- Đầu vào:
phones = ["0981234567", "0901234567", "0981234567", "0917654321", "0901234567"] - Đầu ra:
["0981234567", "0901234567"]
Giải thích từng bước:
0981234567xuất hiện ở vị trí 0 và 2 → đúng 2 lần.0901234567xuất hiện ở vị trí 1 và 4 → đúng 2 lần.0917654321xuất hiện 1 lần → không thỏa.- Thứ tự xuất hiện đầu tiên:
0981234567(vị trí 0) trước0901234567(vị trí 1).
Ví dụ 2:
- Đầu vào:
phones = ["0911111111", "0922222222", "0911111111", "0911111111"] - Đầu ra:
[]
Giải thích: 0911111111 xuất hiện 3 lần (không đúng 2), 0922222222 xuất hiện 1 lần. Không có số nào thỏa mãn nên kết quả rỗng.