I want to find an efficient data structure that can handle the following use case.
I can add new elements to this data structure, e.g.
I call add()
API, add([2,3,4,5,3])
, then this data structure stores [2,3,3,4,5]
. I can query
some target
and return how many numbers smaller than this target. e.g. query(4)
, return 3
(since one 2
and two 3
). And the frequencies of calling add
and query
are in the same order.
Firstly, I think of segment tree
, however, the input number can be anyone in int
value, space will be O(2^32)
Could you give me some advice about which data structure should I use?