MCPcopy Create free account
hub / github.com/Tiwarishashwat/InterviewCodes / NumberContainers

Class NumberContainers

DesignANumberContainerSystem.java:2–33  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1// two maps
2class NumberContainers {
3 HashMap<Integer,TreeSet<Integer>> numberToIdx;
4 HashMap<Integer,Integer> idxToNumber;
5 public NumberContainers() {
6 numberToIdx = new HashMap<>();
7 idxToNumber = new HashMap<>();
8 }
9
10 public void change(int index, int number) {
11 // delete old
12 if(idxToNumber.containsKey(index)){
13 int prev = idxToNumber.get(index);
14 numberToIdx.get(prev).remove(index);
15 if(numberToIdx.get(prev).size()==0){
16 numberToIdx.remove(prev);
17 }
18 }
19 // insert new
20 idxToNumber.put(index,number);
21 if(!numberToIdx.containsKey(number)){
22 numberToIdx.put(number, new TreeSet<>());
23 }
24 numberToIdx.get(number).add(index);
25 }
26
27 public int find(int number) {
28 if(!numberToIdx.containsKey(number)){
29 return -1;
30 }
31 return numberToIdx.get(number).first();
32 }
33}
34
35/**
36 * Your NumberContainers object will be instantiated and called as such:

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected