Re: [闲聊] 每日leetcode

楼主: dont   2025-02-08 22:21:59
2349. Design a Number Container System
## 思路
用hash table 纪录index最后的number
每个number也都建一个minHeap, 存index
change: 更新table、把index加到heap
find: 检查该值的heap, 如果top的index对应到的值不同就丢掉
## Code
```cpp
class NumberContainers {
public:
NumberContainers() {
}
void change(int index, int number) {
table_[index] = number;
heaps_[number].push(index);
}
int find(int number) {
if (!heaps_.count(number)) return -1;
while (!heaps_[number].empty()) {
int curr = heaps_[number].top();
if (table_[curr] == number) return curr;
heaps_[number].pop();
}
return -1;
}
private:
unordered_map<int, priority_queue<int, vector<int>, greater<int>>>
heaps_;
unordered_map<int, int> table_;
};
/**
* Your NumberContainers object will be instantiated and called as such:
* NumberContainers* obj = new NumberContainers();
* obj->change(index,number);
* int param_2 = obj->find(number);
*/
```
作者: Meaverzt (Meaverzt)   2025-02-08 22:22:00
大师

Links booklink

Contact Us: admin [ a t ] ucptt.com