![](https://csdnimg.cn/release/download_crawler_static/86343075/bg5.jpg)
if (leftmax > rightmax)
{
max = leftmax ;
second = leftsecond > rightmax ? leftsecond : rightmax ;
}
else
{
max = rightmax ;
second = leftmax < rightsecond ? rightsecond : leftmax ;
}
}
}
求数组中出现次数超过一半的元素
给定一个 n 个整型元素的数组 a,其中有一个元素出现次数超过 n / 2,求这个元
素。据说是百度的一道题
分析
设置一个当前值和当前值的计数器,初始化当前值为数组首元素,计数器值为
1,然后从第二个元素开始遍历整个数组,对于每个被遍历到的值 a[i]
1 如果 a[i]==currentValue,则计数器值加 1
2 如果 a[i] != currentValue, 则计数器值减 1,如果计数器值小于 0,则更新
当前值为 a[i],并将计数器值重置为 1
代码
// 找出数组中出现次数超过一半的元素
int Find(int* a, int n)
{
int curValue = a[0] ;
int count = 1 ;
for (int i = 1; i < n; ++i)
{
if (a[i] == curValue)