题目:
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。
代码:
1 class Solution { 2 public: 3 int MoreThanHalfNum_Solution(vector<int> numbers) { 4 int length = numbers.size(); 5 if(length == 0) 6 return 0; 7 vector<int> count(length,0); //记录每个元素出现次数 8 for( int i = 0; i < length; count[numbers[i]] ++, i ++) 9 if(count[numbers[i]] >= length / 2) 10 return numbers[i]; 11 return 0; 12 } 13 };
我的笔记:
用一个 count 数组来记录每个元素的重复次数。