Skip to content

Commit aa8154b

Browse files
authored
Create Design a Number Container System.java
1 parent 70d1c41 commit aa8154b

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
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+
*/

0 commit comments

Comments
 (0)