求数组中出现次数超过一半的数字
来源:互联网 发布:西北工业大学矩阵论 编辑:程序博客网 时间:2024/05/22 17:55
题目:一个数组中有一个数字的次数超过了数组的一半,求出这个字符。如:int a[]={2,3,2,2,2,2,2,5,4,1,2,3},求出超过一半的数字是2
由题目可知,这个数字出现的次数,比其他所有数字出现次数之和还要大,所以在遍历时可以保存两个值,一个是里面的数字,一个是出现的次数。
情况:
1)如果下一个数字和保存的数字相同,次数加1
2)如果下一个数字和保存的数字不同,次数减1
3)如果次数为0,把保存的数字换成下一个
这样,最后保存的数字一般就是出现次数最多的,当然还需要检验一下,放止特殊情况干扰结果。
static bool CheckNum(int *numbers, int length, int number){int times = 0;for (int i = 0; i < length; ++i){if (numbers[i] == number)times++;}if (times * 2 <= length)return false;return true;}int MoreThanHalfNum(int *numbers, int length){int flag = 1;int ret = numbers[0];for (int idx = 0; idx < length; ++idx){if (flag == 0){ret = numbers[idx];flag = 1;}else if (numbers[idx] == ret)flag++;elseflag--;}if (CheckNum(numbers, length, ret))return ret;return 0;}
阅读全文
0 0
- 求数组中出现次数超过一半的数字
- 求数组中出现次数超过一半的数字
- 求数组中出现次数超过一半的数字
- 求数组中出现次数超过一半的数字
- 数组中超过出现次数超过一半的数字
- 74.数组中超过出现次数超过一半的数字
- 74 数组中超过出现次数超过一半的数字
- 【数组4】数组中出现次数超过一半的数字
- 数组4:数组中出现次数超过一半的数字
- 求数组中次数超过一半的数字
- 剑指offer面试题 求数组中出现次数超过一半的数字
- 数组中出现次数超过一半的数字
- 找出数组中出现次数超过长度一半的数字
- 2-数组中出现次数超过一半的数字
- 数组中出现次数超过一半的数字
- 数组中出现次数超过一半的数字[算法]
- 数组中出现次数超过一半的数字
- 找出数组中出现次数超过一半的数字--百度
- http接口测试工具——RESTClient
- nRF51822低功耗睡眠函数应用
- 暑期集训之EXCEL排序
- ACM中卡特兰数整理
- 【HDU】5723
- 求数组中出现次数超过一半的数字
- Javascript中的this
- sort+结构体练习_稳定排序 2008浙大研究生复试热身赛(2)——全真模拟
- 3PC
- 3643. 【GDOI2014】拯救莫莉斯
- 用分数的形式输出两个数相除的商——java实现
- RenderTarget在虚幻4的应用【2】双RT缓冲制作颜色恢复
- Linux用户和群组管理的主要配置文件
- 环境配置-git