, , . , , , , ( ). , , , (, , , ).
. , O (n), , , 1 . , :
, List,
List changes
boolean addNumber(int number):
boolean appeared = false
it = changes.begin()
while it.hasNext():
if it.get() < number:
appeared != appeared
it = it.next()
else if it.get() == number:
if !appeared: return true
if it.next().get() == number + 1
it.next().remove()
else
it.insertAfter(number + 1)
it.remove()
return false
else:
if appeared: return true
it.insertBefore(number)
if it.get() == number + 1:
it.remove()
else:
it.insertBefore(number + 1)
}
return false
}
: . , , , , . ; [), , , , . appeared. , 5, 9, 6, 8, 7 ( ), :
[5,6)
[5,6), [9,10)
[5,7), [9,10)
[5,7), [8,10)
[5,10)
5 .