您的位置:首页 > 职场人生

剑指offer——面试题29:数组中出现次数超过一半的数字

2018-03-19 17:30 399 查看

剑指offer——面试题29:数组中出现次数超过一半的数字

要注意:查完temp_value的值后需要验证之

class Solution {
public:
int MoreThanHalfNum_Solution(vector<int> numbers) {
if(numbers.empty())
return 0;
else if(numbers.size() == 1)
return numbers[0];
int temp = numbers[0],temp_value=1;
for(int i = 1; i<numbers.size(); i++){
if(temp_value == 0){
temp = numbers[i];
temp_value = 1;
}
else if(numbers[i] == temp)
temp_value++;
else if(numbers[i] != temp)
temp_value--;
}
//考虑到输入的数组中可能不存在出现次数超过数组长度一半的数字,则需要验证
if(temp_value == 0)
return 0;
else{
temp_value = 0;
for(int i = 0; i < numbers.size(); i++){
if(numbers[i] == temp)
temp_value++;
}
return 2*temp_value>numbers.size()? temp:0;
}

}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: