[剑指Offer] 28.数组中出现次数超过一半的数字
【思路】将每个数字都存入map中作为key值,将它们出现的次数作为value值,当value超过一半时则返回其key值。
1 class Solution 2 { 3 public: 4 int MoreThanHalfNum_Solution(vector<int> numbers) 5 { 6 if(numbers.size() == 1) 7 return numbers[0]; 8 int x = numbers.size()/2; 9 map<int,int> Map; 10 for(int i = 0; i < numbers.size(); i ++) 11 { 12 if(Map.find(numbers[i]) == Map.end()) 13 { 14 Map.insert(pair<int,int>(numbers[i],0)); 15 } 16 else 17 { 18 Map[numbers[i]] ++; 19 if(Map[numbers[i]] >= x) 20 return numbers[i]; 21 } 22 } 23 return 0; 24 } 25 };