找出数组中超出总数1/4的数字
2016-12-03 16:11
155 查看
#include <iostream> //上一题的扩展,有3个数字出现次数超过1/4。 using namespace std; void Grial(int a[], int n) { if (n <= 3)return; int count1=0, key1=0; int count2=0, key2=0; int count3=0, key3=0; for (int i = 0; i < n; i++) { if (!count1 && key2 != a[i] && key3 != a[i]) { count1++; key1 = a[i]; } else if (key1 == a[i]) { count1++; } else if (key2!=a[i] && key3!=a[i]) { count1--; } if (!count2 &&key3 != a[i] && key1!=a[i]) { count2++; key2 = a[i]; } else if (key2 == a[i]) { count2++; } else if (key1!=a[i] && key3!=a[i]) { count2--; } if (!count3 && key1!=a[i] && key2!=a[i]) { count3++; key3 = a[i]; } else if (key3 == a[i]) { count3++; } else if (key1!=a[i] && key2!=a[i]) { count3--; } } cout << key1 << endl; cout << key2 << endl; cout << key3 << endl; } int main() { int a[] = {1,5,5,5,5,2,3,1,2,2,1,1,1,2}; Grial(a, sizeof(a) / sizeof(int)); return 0; }
相关文章推荐
- 【算法练习】找出数组中仅出现一次的数字
- 一个整型数组里除了一个数字之外,其他的数字都出现了两次,找出出现一次的数字
- 算法:找出数组中未出现的那个数字
- 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
- 第六十一题(找出数组中两个只出现一次的数字)
- [LeetCode] Find All Numbers Disappeared in an Array 找出数组中所有消失的数字
- 《牛客网剑指offer50题》找出数组中任意一个重复的数字
- 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{
- C++找出数组中重复的数字( 剑指offer面试题3-1)
- LeetCode刷题记录7-从数组中找出指定条件的3个数字
- 一个整型数组里除了两个数字之外,其它的数字都出现了两次。请写程序找出这两个只出现一次的数字。
- 61 找出数组中两个只出现一次的数字
- 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。 找出这两个数字,编程实现
- java实现找出数组中出现次数超过一半的数字
- 找出数组中两个只出现一次的数字;异或运算^的一个作用
- 微策略2011校园招聘笔试题(找出数组中两个只出现一次的数字)
- 用C++编程 输入10个数字,放在一个数组中,找出其中最小的值,输出这个值以及它在数组中的下标
- 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
- 经典算法学习——快速找出数组中两个数字,相加等于某特定值
- (思科笔试)数组a[N],存放了1至N-1个数,其中某个数重复一次。写一个函数,找出被重复的数字.时间复杂度必须为o(N)函数原型: