写完看评论去才发现没用上过半的条件,做的麻烦了。其实差不多,两种方法如下:
class Solution { public: int MoreThanHalfNum_Solution(vector<int> numbers) { sort(numbers.begin(),numbers.end()); int number=numbers[0]; int sum=0; int ans=numbers[0]; int max=0; for(int i=0;i<numbers.size();i++){ if(number==numbers[i]) sum++; else { number=numbers[i]; sum=1; } if(max<sum){ ans=number; max=sum; } } return ans; } };
统计次数还可以用map
class Solution { public: int MoreThanHalfNum_Solution(vector<int> numbers) { map<int,int> m; int ans=0; int max=0; for(int i=0;i<numbers.size();i++){ m[numbers[i]]++; ans=max<m[numbers[i]]?numbers[i]:ans; max=max<m[numbers[i]]?m[numbers[i]]:max; } return ans; } };