Wie wäre es mit Bitmaps zum Aufzeichnen, für jeden möglichen nbr
, ob dieser Wert verwendet wird oder nicht?
Um aufzuzeichnen, dass ein Wert genommen wird, verwenden Sie SETBIT
:
SETBIT key [nbr] 1
So finden Sie eine kostenlose nbr
Verwenden Sie BITPOS
:
BITPOS key 0
Um Rennbedingungen zu vermeiden, sollten Sie sicherstellen, dass Ihr Get-and-Set atomar ist. [Das OP spricht dies in einer Folgefrage an.]
Dies erfordert sehr wenig Speicher (8 KB für 65536 mögliche Werte). BITPOS
ist O(n), aber das ist wahrscheinlich kein wirkliches Problem.