Hvad med at bruge bitmaps til at optage, for enhver mulig nbr , om den værdi bruges eller ej?
For at registrere, at en værdi er taget, brug SETBIT :
SETBIT key [nbr] 1
For at finde en gratis nbr brug BITPOS :
BITPOS key 0
For at undgå løbsforhold skal du sørge for, at dit get-and-set er atomart. [OP behandler dette i et opfølgende spørgsmål.]
Dette vil kræve meget lidt hukommelse (8K bytes for 65536 mulige værdier). BITPOS er O(n), men det er næppe et reelt problem.