考察的知识点:哈希;
解答方法分析:
- 将牛群A和牛群B的牛体重合并到一个有序列表中。
- 使用两个指针分别指向牛群A和牛群B的第一个牛的体重,然后比较两个指针指向的体重大小,将较小的体重添加到有序列表中,并将对应的指针后移动一位。重复该步骤,直到两个指针都指向了牛群的末尾。
- 遍历整个有序列表,统计每个体重的出现次数,使用两个变量preWeight和curFreq来记录当前正在统计的体重和出现次数。遍历过程中,如果当前遍历到的体重与preWeight相同,则将curFreq加1;如果当前遍历到的体重与preWeight不同,则更新preWeight为当前遍历到的体重,并将curFreq重置为1。同时,使用两个变量maxFreq和maxWeight来记录出现次数最多的体重和对应的出现次数。
- 返回maxWeight作为结果。
所用编程语言:C++;
完整编程代码:↓
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param weightsA int整型vector * @param weightsB int整型vector * @return int整型 */ int findMode(vector<int>& weightsA, vector<int>& weightsB) { unordered_map<int, int> freq; int maxFreq = 0; int maxWeight = 0; for (int weight : weightsA) { freq[weight]++; maxFreq = max(maxFreq, freq[weight]); } for (int weight : weightsB) { freq[weight]++; maxFreq = max(maxFreq, freq[weight]); } for (auto it = freq.begin(); it != freq.end(); ++it) { if (it->second == maxFreq) { maxWeight = max(maxWeight, it->first); } } return maxWeight; } };