您的位置:首页 > 其它

数组中出现次数超过一半的数字。

2015-07-08 09:06 141 查看
题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}, 由于数组中数字2出现了5次,超过数组的长度的一半,因此输出2。

int MoreThanHalfNum(int *arr, int len)
{
int ret = 0;
int times = 0;
int i = 0;
for (; i < len; ++i)
{
if (times == 0)
{
ret = arr[i];//将arr[i]的值先保存在ret中
times = 1;
}
else if (arr[i] == ret)
{
times++;
}
else
{
times--;
}

}
return ret;
}
int main()
{
int arr[] = {1, 2, 3, 2, 2, 2, 5, 4, 2};
int ret = MoreThanHalfNum(arr, sizeof(arr)/sizeof(int));
cout << ret << endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: