Tôi cần giữ một bộ sưu tập về các số nguyên trong phạm vi 0 đến 65535 để tôi có thể nhanh chóng thực hiện các thao tác sau:
- Chèn một số nguyên mới
- Chèn một loạt các số nguyên liền kề
- Xóa một số nguyên
- Xóa tất cả các số nguyên dưới một số nguyên
- Kiểm tra nếu có một số nguyên
Dữ liệu của tôi có thuộc tính mà nó thường chứa các số nguyên trong bộ sưu tập. Ví dụ: bộ sưu tập có thể tại một thời điểm là:
{ 121, 122, 123, 124, 3201, 3202, 5897, 8912, 8913, 8914, 18823, 18824, 40891 }
Cách tiếp cận đơn giản nhất là sử dụng cây nhị phân cân bằng như bộ C ++ std ::, tuy nhiên, bằng cách đó, tôi không tận dụng thực tế là tôi thường có các số. Có lẽ sẽ tốt hơn để lưu trữ một bộ sưu tập các phạm vi? Nhưng điều đó có nghĩa là một phạm vi cần có thể được chia nhỏ nếu một số nguyên ở giữa của nó bị xóa hoặc được nối với nhau nếu khoảng trống giữa hai phạm vi được điền vào.
Có cấu trúc dữ liệu hiện có nào phù hợp cho vấn đề này không?