题解 | #草原上优势牛种# 摩尔投票法
草原上优势牛种
https://www.nowcoder.com/practice/178705f48adc4e39ac8537a22e8941cd
知识点
摩尔投票法
思路
题目要求求众数,我们可以排序后找到中间元素,这样时间复杂度为。
用摩尔投票法可以将复杂度降到,主要思想就是像投票一样,优势牛种会抵消其他的牛种的总和。
AC code(C++)
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型vector
* @return int整型
*/
int majority_cow(vector<int>& nums) {
// 摩尔投票法
int m = 0, cnt = 0;
for (auto x : nums) {
if (cnt == 0) {
m = x;
}
if (m == x) cnt += 1;
else cnt -= 1;
}
return m;
}
};
查看9道真题和解析