File tree 1 file changed +34
-0
lines changed
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