Object
LongNumberSequence
Collection which keeps track of incoming positive number sequence (1, 2, 3, 4, ...) and allows to
query what numbers are missing in it.
When this collection initially created all numbers of it are missing.
This collection can keep track only of N last numbers of the sequence. All numbers less than "last added maximum number - N" are removed.
This collection is not thread safe.
Examples
// empty sequence of numbers between [1, 10]
LongNumberSequence seq = new LongNumberSequence(10);
// prints "[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]" since all numbers are missing
System.out.println(seq.getMissing());
// similarly all numbers between [1, 8] are missing so it prints "[1, 2, 3, 4, 5, 6, 7, 8]"
System.out.println(seq.getMissing(1, 8));
// adding few numbers
seq.add(5);
seq.add(4);
// now 4 and 5 are not missing so it prints "[1, 2, 3, 6, 7, 8]"
System.out.println(seq.getMissing(1, 8));
// adding 13
// since sequence size is 10 it cannot hold 13 numbers so it shifts
// to the right to accommodate 13 and now it is a sequence between [4, 13]
seq.add(13);
// prints "[6, 7, 8, 9, 10, 11, 12]" (1, 2, 3 does not belong to the sequence anymore
// since it is not sequence of numbers between [1, 10] but between [4, 13]
System.out.println(seq.getMissing(1, 13));
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
add
(long n) Add new number to the sequence.Returns unmodifiable collection of missing numbers from the sequence of numbers seen so fargetMissing
(long first, long last) Returns unmodifiable collection of missing numbers between [first, last] from the sequence of numbers seen so farboolean
Returns whether there are any missing number of last N numbers or notboolean
isMissing
(long n) Check if certain number is missingint
size()
-
Constructor Details
-
LongNumberSequence
public LongNumberSequence(int size) - Parameters:
size
- how many N last numbers to keep. All numbers less than "last added maximum number - N" are removed.
-
-
Method Details
-
size
public int size()- Returns:
- how many N last numbers can be queried for presence
-
hasMissing
public boolean hasMissing()Returns whether there are any missing number of last N numbers or not -
add
public void add(long n) Add new number to the sequence.Complexity is log(N)
-
isMissing
public boolean isMissing(long n) Check if certain number is missingComplexity is log(N)
-
getMissing
Returns unmodifiable collection of missing numbers from the sequence of numbers seen so far -
getMissing
Returns unmodifiable collection of missing numbers between [first, last] from the sequence of numbers seen so far
-