【C语言】统计数组中出现次数超过一半的数字 //统计数组中出现次数超过一半的数字 #include <stdio.h> int Find(int *arr, int len) { int num = 0; //当前数字 int times = 0; //当前数字出现的次数 int i = 0; for (i = 0; i<len; i++) { if (times == 0) { num = arr[i]; tim...
2}, 因为数组中数字2出现了5次,超过数组的长度的一半,因此输出2 一种办法是先把数组排序。那么超过一半的元素一定是数组最中间的元素。 另外一种办法比較抽象。设一个变量保存当前值。设一个次数,当前值与下一个值进行比較。假设相等,次数加一,假设不相等。次数减一。假设次数减到0了还是不相等,就把当前值替换...
找出在一个数组中出现次数超过一半的数,可以这样理解,找一个数的中位数,基于这样思想最直观的做法是排序后找中间的数既可,但最好时间复杂度也得O(NlogN)所以用一种简单的办法来解决 定义两个变量,从第一个数开始找,并记录第一个数为result为需要找的数,它出现的次数初始化times=1,以后只要...
比如输入一个长度为9的数组{1,2。3。2,2。2。5,4。2}, 因为数组中数字2出现了5次,超过数组的长度的一半,因此输出2 一种办法是先把数组排序。那么超过一半的元素一定是数组最中间的元素。 另外一种办法比較抽象。设一个变量保存当前值。设一个次数,当前值与下一个值进行比較。假设相等,次数加一,假设不相等。