Design a Number Container System LeetCode solution in C++

1
class NumberContainers {
2
public:
3
map<int, int> indexToNumber; // stores number corresponding to an index.
4
map<int, set<int>> numberToIndex; // stores all the indexes corresponding to a number.
5
NumberContainers() {}
6

7
void change(int index, int number) {
8
if (!indexToNumber.count(index)) { // if there is no number at the given index.
9
numberToIndex[number].insert(index); // store index corresponding to the given number
10
indexToNumber[index] = number; // store number corresponding to the index.
11
} else { // Update both map.
12

13
int num = indexToNumber[index]; // number at given index currently.
14

15
// remove the index
16
numberToIndex[num].erase(index);
17
if (numberToIndex[num].empty()) numberToIndex.erase(num);
18

19
// insert the new number at the given index and store the index
20
// corresponding to that number.
21
numberToIndex[number].insert(index);
22
indexToNumber[index] = number;
23
}
24
}
25

26
int find(int number) {
27
if (!numberToIndex.count(number)) return -1;
28
// returning first element in the set as it will be the smallest index
29
// always.
30
return *numberToIndex[number].begin();
31
}
32
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0