File tree Expand file tree Collapse file tree 1 file changed +34
-0
lines changed
Expand file tree Collapse file tree 1 file changed +34
-0
lines changed Original file line number Diff line number Diff line change 1+ class NumberContainers {
2+
3+ private final Map <Integer , TreeSet <Integer >> numberToIndex ;
4+ private final Map <Integer , Integer > indexToNumber ;
5+
6+ public NumberContainers () {
7+ this .numberToIndex = new HashMap <>();
8+ this .indexToNumber = new HashMap <>();
9+ }
10+
11+ public void change (int index , int number ) {
12+ if (indexToNumber .containsKey (index )) {
13+ int prevNumber = indexToNumber .get (index );
14+ numberToIndex .get (prevNumber ).remove (index );
15+ }
16+ indexToNumber .put (index , number );
17+ numberToIndex .computeIfAbsent (number , k -> new TreeSet <>()).add (index );
18+ }
19+
20+ public int find (int number ) {
21+ TreeSet <Integer > indices = numberToIndex .getOrDefault (number , new TreeSet <>());
22+ if (indices .isEmpty ()) {
23+ return -1 ;
24+ }
25+ return indices .first ();
26+ }
27+ }
28+
29+ /**
30+ * Your NumberContainers object will be instantiated and called as such:
31+ * NumberContainers obj = new NumberContainers();
32+ * obj.change(index,number);
33+ * int param_2 = obj.find(number);
34+ */
You can’t perform that action at this time.
0 commit comments