c++中数组中紧跟key该博客介绍了如何解决LeetCode上的第2190题,即找到数组中紧随给定key之后出现频率最高的目标数字。通过使用Map数据结构统计每个目标数字出现的次数,最终找出出现次数最多的那个
时间: 2024-09-21 10:01:20 浏览: 40
c++-c++编程基础之leetcode题解第26题删除有序数组中的重复项.zip
在C++中,解决LeetCode上第2190题通常涉及遍历数组并结合使用一个关联容器(如`std::map`或`std::unordered_map`),以及一些临时变量来跟踪最高频率和当前的关键字(key)。以下是一个简单的解决方案步骤:
1. 首先,创建一个空的`std::map`来存储每个目标数字及其出现的次数。
2. 遍历数组,对于每个元素,检查它是否等于给定的关键字 `key`。如果不是关键字,检查`map`中是否存在该元素。如果存在,则更新它的计数;如果不存在,将新项添加到`map`中,并设置其计数为1。
3. 同时,维护两个变量,一个是用于记录当前最高频率的次数,另一个是记录出现频率最高的目标数字。
4. 当遍历完数组后,遍历`map`,找到出现次数最多的数字。
```cpp
#include <unordered_map>
using namespace std;
int maxFrequency(vector<int>& nums, int key) {
unordered_map<int, int> freq;
int highestFreq = 0, target = key;
// 更新freq map并查找最高频次
for (int num : nums) {
if (num == key) {
continue; // 跳过已知的key
} else if (freq.find(num) != freq.end()) {
freq[num]++;
} else {
freq[num] = 1;
}
if (freq[num] > highestFreq) {
highestFreq = freq[num];
target = num;
}
}
return highestFreq;
}
```
阅读全文