题解 | #草原上优势牛种#

草原上优势牛种

https://www.nowcoder.com/practice/178705f48adc4e39ac8537a22e8941cd

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

题目考察的知识点

这道题目考察的是在一个数组中找到数量超过一半的某个元素。

题目解答方法的文字分析

题目要求我们找到数量超过一半的优势牛种。由于优势牛种的数量超过一半,那么最简单的方法就是使用摩尔投票算法。摩尔投票算法可以在线性时间内找到数组中数量超过一半的元素。

思路:

  1. 初始化两个变量 candidatecount,分别用于存储候选优势牛种和其对应的票数。
  2. 遍历数组,对于每一个元素:如果 count 为 0,将当前元素设置为候选优势牛种,同时将 count 设为 1。如果当前元素与候选优势牛种相同,将 count 增加 1。如果当前元素与候选优势牛种不同,将 count 减少 1。
  3. 最后得到的候选优势牛种即为答案。

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

本题解析所用的编程语言是 C++。

完整且正确的编程代码

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums int整型vector 
     * @return int整型
     */
    int majority_cow(vector<int>& nums) {
        // 初始化候选优势牛种和对应的票数
        int candidate = 0; // 候选优势牛种
        int count = 0;     // 当前候选牛种的票数

        // 遍历数组中的每个元素
        for (int num : nums) {
            if (count == 0) {
                // 如果当前候选牛种的票数为 0,将当前元素设为候选牛种
                candidate = num;
                count = 1;
            } else if (num == candidate) {
                // 如果当前元素与候选牛种相同,票数增加
                count++;
            } else {
                // 如果当前元素与候选牛种不同,票数减少
                count--;
            }
        }

        // 返回最终的候选优势牛种
        return candidate;
    }
};

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

阿Q的题解 文章被收录于专栏

阿Q秋招刷过的题

全部评论

相关推荐

牛客717484937号:双飞硕没实习挺要命的
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务