Que diriez-vous d'utiliser Bitmaps pour enregistrer, pour chaque nbr
possible , que cette valeur soit utilisée ou non ?
Pour enregistrer qu'une valeur est prise, utilisez SETBIT
:
SETBIT key [nbr] 1
Pour trouver un nbr
gratuit utiliser BITPOS
:
BITPOS key 0
Pour éviter les conditions de course, vous voudrez vous assurer que votre préparation est atomique. [Le PO aborde cela dans une question de suivi.]
Cela nécessitera très peu de mémoire (8K octets pour 65536 valeurs possibles). BITPOS
est O(n), mais il est peu probable que ce soit un vrai problème.