写完看评论去才发现没用上过半的条件,做的麻烦了。其实差不多,两种方法如下:
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;
}
};
京公网安备 11010502036488号