数组中出现次数超过一半的数字
题目描述
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。
- 数组中只有两种情况,是这个数字,不是这个数字,且若数字存在,则一定比其余数字出现次数的和大1或者更多,所以设置一个变量times初值为1,除了这个数字以外,其他数字一定会将times减到0,最终这个数字一定会出现。(如果存在的话)
- 找到这个出现次数最多的数字,不一定是超过数组长度一半的数字,所以需要再统计该数字出现的次数。
1 | function MoreThanHalfNum_Solution(numbers) |