1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| class NumberContainers {
private final Map<Integer, Integer> indexToNumMap; private final Map<Integer, TreeSet<Integer>> numToIndexTreeSetMap;
public NumberContainers() { this.indexToNumMap = new HashMap<>(); this.numToIndexTreeSetMap = new HashMap<>(); }
public void change(int index, int number) { Integer prevNum = indexToNumMap.put(index, number); if (prevNum != null) { numToIndexTreeSetMap.get(prevNum).remove(index); }
numToIndexTreeSetMap.computeIfAbsent(number, key -> new TreeSet<>()) .add(index); }
public int find(int number) { TreeSet<Integer> indexSet = numToIndexTreeSetMap.get(number); if (indexSet == null || indexSet.isEmpty()) { return -1; }
return indexSet.first(); }
}
|
References
2349. Design a Number Container System