题目描述
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。
1 #include<iostream> 2 #include<string> 3 #include<algorithm> 4 #include<map> 5 #include<vector> 6 using namespace std; 7 class Solution { 8 public: 9 int MoreThanHalfNum_Solution(vector<int> numbers) { 10 sort(numbers.begin(), numbers.end()); 11 int count = 1; 12 int c = numbers[0]; 13 int c1; 14 int count1 = 0; 15 for (int i = 1; i < numbers.size(); i++) 16 { 17 if (numbers[i] == c) 18 { 19 count++; 20 21 } 22 else 23 { 24 if (count1 < count) 25 { 26 count1 = count; 27 c1 = c; 28 } 29 count = 1; 30 c = numbers[i]; 31 } 32 } 33 if (count1 >= (numbers.size() / 2)) 34 return c1; 35 else 36 return 0; 37 38 } 39 }; 40 int main() 41 { 42 vector<int> vet{1,2,3,4,5,6,8,2,3 }; 43 Solution s; 44 cout << s.MoreThanHalfNum_Solution(vet) << endl; 45 system("pause"); 46 return 0; 47 }