题解 | #草原上优势牛种#
草原上优势牛种
https://www.nowcoder.com/practice/178705f48adc4e39ac8537a22e8941cd
知识点
思维,模拟
思路
由题意,必然存在那个半数以上的数,所以我们理解成互相攻击问题即可。维护当前次数以及当前的编号,当出现不同编号时,次数--,如果次数小于等于0,那么更新编号。最后留下来的那个编号即为出现次数半数以上的数。
代码
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型vector
* @return int整型
*/
int majority_cow(vector<int>& nums) {
// write code here
int id=nums[0];//当前编号
int cnt=1;//次数
for(int i=1;i<nums.size();i++)
{
if(nums[i]==id)cnt++;
else
{
cnt--;
if(cnt<=0)
{id=nums[i];//更新编号
cnt=1;//更新次数
}
}
cout<<nums[i]<<endl;
}
return id;
}
};