Cách tiếp cận đã nói ở trên đòi hỏi mỗi ô có thể chứa một số lượng đủ lớn để giữ số lần mà mảng có thể cần phải được khởi tạo lại, đó là một hình phạt không gian đáng kể. Nếu một vị trí có khả năng giữ ít nhất một giá trị sẽ không bao giờ được viết một cách hợp pháp, người ta có thể tránh có bất kỳ hình phạt không gian (không cố định) nào khác với chi phí thêm O(Wlg(N))hình phạt thời gian, trong đó Wsố lượng vị trí mảng khác biệt được viết giữa hoạt động xóa và Nlà kích thước của mảng. Ví dụ: giả sử một người sẽ lưu trữ các số nguyên từ -2,147,483,647 đến 2,147,483,647 (nhưng không bao giờ -2,147,483,648) và người ta muốn các mục mảng trống đọc là 0. Bắt đầu bằng cách điền vào mảng với -2,147,483,648 (gọi giá trị đóB). Khi đọc một mảng mảng cho ứng dụng, hãy báo cáo giá trị Bbằng 0. Trước khi viết khe mảng I, kiểm tra xem nó diễn ra Bvà nếu như vậy và Ilớn hơn một, lưu trữ một số không để khe I/4sau khi thực hiện một kiểm tra tương tự cho vị trí đó (và nếu nó tổ chức B, I/16, vv).
Để xóa mảng, bắt đầu Ibằng 0 hoặc 1, tùy thuộc vào cơ sở mảng (thuật toán như mô tả sẽ hoạt động cho một trong hai). Sau đó lặp lại quy trình sau: Nếu mục Ilà B, tăng Ivà nếu làm như vậy sẽ mang lại bội số của bốn, chia cho bốn (chấm dứt nếu phép chia mang lại giá trị 1); nếu mục Inày không B, lưu trữ Bở đó và nhân Ivới bốn (nếu Ibắt đầu từ 0, nhân với bốn sẽ để lại 0, nhưng vì mục 0 sẽ trống, Isẽ được tăng lên).
Lưu ý rằng người ta có thể thay thế "bốn" hằng số ở trên bằng các số khác, với các giá trị lớn hơn thường yêu cầu gắn thẻ công việc ít hơn, nhưng các giá trị nhỏ hơn thường yêu cầu xóa công việc ít hơn; vì các vị trí mảng được gắn thẻ phải được xóa, giá trị ba hoặc bốn gần như chắc chắn là tối ưu; vì giá trị bốn chắc chắn gần với tối ưu, tốt hơn hai hoặc tám và thuận tiện hơn bất kỳ số nào khác, nó có vẻ là sự lựa chọn hợp lý nhất.