考察的知识点:哈希;

解答方法分析:

  1. 将牛群A和牛群B的牛体重合并到一个有序列表中。
  2. 使用两个指针分别指向牛群A和牛群B的第一个牛的体重,然后比较两个指针指向的体重大小,将较小的体重添加到有序列表中,并将对应的指针后移动一位。重复该步骤,直到两个指针都指向了牛群的末尾。
  3. 遍历整个有序列表,统计每个体重的出现次数,使用两个变量preWeight和curFreq来记录当前正在统计的体重和出现次数。遍历过程中,如果当前遍历到的体重与preWeight相同,则将curFreq加1;如果当前遍历到的体重与preWeight不同,则更新preWeight为当前遍历到的体重,并将curFreq重置为1。同时,使用两个变量maxFreq和maxWeight来记录出现次数最多的体重和对应的出现次数。
  4. 返回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;
    }
};