求数组中出现次数超过一半的数字
来源:互联网 发布:linux make 退出 编辑:程序博客网 时间:2024/05/22 16:44
思路和代码参考《程序员编程艺术》第二十一章“发帖水王”及其扩展。
求一个数组中出现次数超过一半的数字。比如有一个数组arr[] = {2,1,3,2,2,1,4,2,2,2},这个数组中出现次数超过一半的数字就是2。
思路: 数组中有有个数字出现次数超过一半,也就是说,有个数字出现的次数比其他数字出现的次数的和还要多。我们可以在遍历数组时保存两个值,一个是数组中的数字,一个是该数字出现的次数。当我们遍历下一个元素时,如果下一个数字和我们之前保存的数字相同,那么次数加1,如果不同,则次数减1,当次数为0时,将保存的数字重置。
int Find(int* a, int sz){ int number; int times, i; for (i = times = 0; i < sz; i++) { if (times == 0) { number = a[i]; times = 1; } else { if (number == a[i]) { times++; } else { number = a[i]; times--; } } } return number;}int main(){ int arr[] = { 2, 1, 3, 2, 2, 1, 4, 2, 2, 2 }; int sz = sizeof(arr) / sizeof(arr[0]); int ret = Find(arr, sz); cout << ret << endl; system("pause"); return 0;}
阅读全文
2 0
- 求数组中出现次数超过一半的数字
- 求数组中出现次数超过一半的数字
- 求数组中出现次数超过一半的数字
- 求数组中出现次数超过一半的数字
- 数组中超过出现次数超过一半的数字
- 74.数组中超过出现次数超过一半的数字
- 74 数组中超过出现次数超过一半的数字
- 【数组4】数组中出现次数超过一半的数字
- 数组4:数组中出现次数超过一半的数字
- 求数组中次数超过一半的数字
- 剑指offer面试题 求数组中出现次数超过一半的数字
- 数组中出现次数超过一半的数字
- 找出数组中出现次数超过长度一半的数字
- 2-数组中出现次数超过一半的数字
- 数组中出现次数超过一半的数字
- 数组中出现次数超过一半的数字[算法]
- 数组中出现次数超过一半的数字
- 找出数组中出现次数超过一半的数字--百度
- 数据结构==二叉树(数组实现)
- ny-32-组合数
- GDB List no symbol table is loaded
- 理解mysql_limit优化思路
- 陈纪修老师《数学分析》 第06章:不定积分 笔记
- 求数组中出现次数超过一半的数字
- 真理
- 我的AI转型之路与AI之我见----内有资源
- 理解mysql_简述mvcc
- poj2531(dfs)Network Saboteur
- 一家人(寻找两个数的关系)
- Kafka的Log存储解析
- Java中static关键字的作用
- 理解mysql_order by排序原理及优化