题解 | #数组中出现次数超过一半的数字#

数组中出现次数超过一半的数字

https://www.nowcoder.com/practice/e8a1b01a2df14cb2b228b30ee6a92163

抵消法:

class Solution {
public:
    int MoreThanHalfNum_Solution(vector<int> numbers) {
        if(numbers.empty())return 0;
        int result=numbers[0];
        int times=1;
        for(int i=1;i<numbers.size();i++){
            if(times!=0){
                if(result==numbers[i]){
                    ++times;
                }else{
                    --times;
                }
            }else{
                result=numbers[i];
                times=1;
            }
        }
        int count=0;
        for(int i=0;i<numbers.size();i++){
            if(result==numbers[i]){
                ++count;
            }
        }
        if(count>numbers.size()/2){
            return result;
        }else{
            return 0;
        }
    }
};
全部评论

相关推荐

11-09 01:22
已编辑
东南大学 Java
高级特工穿山甲:羡慕,我秋招有家企业在茶馆组织线下面试,约我过去“喝茶详谈”😢结果我去了发现原来是人家喝茶我看着
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务