剑指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; } } };
相关文章推荐
- 剑指offer-----面试题29(数组中出现次数超过一半的数字)
- 剑指Offer面试题29(java版):数组中出现次数超过一半的数字
- 剑指offer-面试题29-数组中出现次数超过一半的数字
- 剑指Offer面试题29:数组中出现次数超过一半的数字 Java实现
- 剑指offer——面试题29:数组中出现次数超过一半的数字
- (剑指Offer)面试题29:数组中出现次数超过一半的数字
- 《剑指offer》面试题29:数组中出现次数超过一半的数字
- 剑指Offer面试题29(java版):数组中出现次数超过一半的数字
- 剑指offer-面试题29-数组中出现次数超过一半的数字
- 剑指Offer_面试题29_数组中出现次数超过一半的数字
- 《剑指Offer》学习笔记--面试题29:数组中出现次数超过一半的数字
- 剑指offer面试题[29]-数组中出现次数超过一半的数字
- 面试题29数组中出现次数超过一半的数字
- 面试题29:数组中出现次数超过一半的数字
- 面试题29:找出数组中出现次数超过一半的数字-基于partition函数以及分摊法
- 面试题29.数组中出现次数超过一半的数字
- 面试题29:数组中出现次数超过一半的数字
- 面试题29 数组中出现次数超过一半的数字
- 面试题29:数组中出现次数超过一半的数字
- 面试题29. 数组中出现次数超过一半的数字