大家好,我是开车的阿Q,自动驾驶的时代已经到来,没时间解释了,快和阿Q一起上车。作为自动驾驶系统工程师,必须要有最好的C++基础,让我们来一起刷题吧。

题目考察的知识点

本题考察如何找到一组有序数组中的众数。

题目解答方法的文字分析

由于牛群A和牛群B的牛都按照体重从小到大进行排序,我们可以使用两个指针来遍历数组,并统计每个体重出现的次数。

具体步骤如下:

  1. 使用两个指针p1和p2,分别指向weightsA和weightsB的开头。
  2. 使用unordered_map记录每个体重出现的次数,键为体重,值为出现次数。
  3. 遍历weightsA和weightsB,统计每个体重的出现次数。
  4. 找到出现次数最多的次数max_count。
  5. 遍历哈希表,找到出现次数等于max_count的所有体重,并记录最大的体重max_weight。
  6. 返回max_weight作为众数。

本题解析所用的编程语言 (C++)

C++

完整且正确的编程代码

class Solution {
public:
    int findMode(vector<int>& weightsA, vector<int>& weightsB) {
        unordered_map<int, int> count_map; // 记录每个体重出现的次数

        int p1 = 0; // 指向weightsA的指针
        int p2 = 0; // 指向weightsB的指针
        while (p1 < weightsA.size() && p2 < weightsB.size()) {
            int weightA = weightsA[p1];
            int weightB = weightsB[p2];

            if (weightA < weightB) {
                count_map[weightA]++; // weightA的次数加1
                p1++; // 移动p1指针,指向下一个元素
            } else if (weightA > weightB) {
                count_map[weightB]++; // weightB的次数加1
                p2++; // 移动p2指针,指向下一个元素
            } else {
                count_map[weightA]++; // weightA的次数加1
                count_map[weightB]++; // weightB的次数加1
                p1++; // 同时移动p1和p2指针,指向下一个元素
                p2++;
            }
        }

        // 处理weightsA和weightsB中剩余的元素
        while (p1 < weightsA.size()) {
            count_map[weightsA[p1]]++; // weightA的次数加1
            p1++;
        }

        while (p2 < weightsB.size()) {
            count_map[weightsB[p2]]++; // weightB的次数加1
            p2++;
        }

        int max_count = 0; // 出现次数最多的次数
        for (auto& [weight, count] : count_map) {
            max_count = max(max_count, count); // 更新出现次数最多的次数
        }

        int max_weight = -1; // 出现次数最多的体重
        for (auto& [weight, count] : count_map) {
            if (count == max_count) {
                max_weight = max(max_weight, weight); // 更新出现次数最多的体重
            }
        }

        return max_weight; // 返回出现次数最多且最大的体重作为众数
    }
};

您的关注、点赞、收藏就是我创作的动力,三连支持阿Q!