如何在一堆数中找到那个出现次数超过一半的数字 Posted on 2016-03-22 | In 数据结构与算法 | 如何在一堆数中找到那个出现次数超过一半的数字解体思路:遍历数组,选取当前元素作为要测试的数字,向后遍历,如果相等,则个数加一,否则,减一; 12345678910111213141516171819202122232425262728//需要注意的是数组中要求的元素的个数一定要超过一半,否则就不对#include <cstdio>int exceed(int arr[], int length){ int copys = 0; int num = arr[0]; for(int i = 0 ; i < length; ++i){ if (copys == 0) num = arr[i]; if (num == arr[i]) copys++; else --copys; } return num;}int main(){ int a[] = {1,3,4,3,6,8,3,3,3,3,9,6,5,3,3,3,3,3}; int l = sizeof(a)/sizeof(int); printf("%d\n", exceed(a, l)); return 0;}