File tree 1 file changed +14
-13
lines changed
scripts/algorithms/D/Design a Number Container System
1 file changed +14
-13
lines changed Original file line number Diff line number Diff line change
1
+ // Runtime: 652 ms (Top 85.73%) | Memory: 179 MB (Top 14.04%)
1
2
class NumberContainers {
2
3
public:
3
4
map<int , int > indexToNumber; // stores number corresponding to an index.
4
5
map<int , set<int >>numberToIndex; // stores all the indexes corresponding to a number.
5
6
NumberContainers () {}
6
-
7
+
7
8
void change (int index, int number) {
8
-
9
+
9
10
if (!indexToNumber.count (index )) { // if there is no number at the given index.
10
11
numberToIndex[number].insert (index ); // store index corresponding to the given number
11
12
indexToNumber[index ] = number; // store number corresponding to the index.
12
13
}
13
14
else { // Update both map.
14
-
15
+
15
16
int num = indexToNumber[index ]; // number at given index currently.
16
-
17
+
17
18
// remove the index
18
- numberToIndex[num].erase (index );
19
- if (numberToIndex[num].empty ()) numberToIndex.erase (num);
20
-
21
- // insert the new number at the given index and store the index corresponding to that number.
19
+ numberToIndex[num].erase (index );
20
+ if (numberToIndex[num].empty ()) numberToIndex.erase (num);
21
+
22
+ // insert the new number at the given index and store the index corresponding to that number.
22
23
numberToIndex[number].insert (index );
23
24
indexToNumber[index ] = number;
24
- }
25
+ }
25
26
}
26
-
27
+
27
28
int find (int number) {
28
- if (!numberToIndex.count (number)) return -1 ;
29
+ if (!numberToIndex.count (number)) return -1 ;
29
30
// returning first element in the set as it will be the smallest index always.
30
- return *numberToIndex[number].begin ();
31
+ return *numberToIndex[number].begin ();
31
32
}
32
- };
33
+ };
You can’t perform that action at this time.
0 commit comments