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

来源:互联网 发布:淘宝基金如何赎回 编辑:程序博客网 时间:2024/06/16 09:01

算法分析:寻找数组中出现次数超过一半的数字,如果没有就返回0。定义两个变量,一个result,用于记录array[i],一个为count,统计次数,如果result == array[i],++count。如果不等于并且count大于0,则--count,如果这个数字存在,那么count最后一定大于0。


public class MoreThanHalfNumInArray {

    public int MoreThanHalNumInArray(int [] array){
        
        int result = array[0];
        int count = 1;

        for(int i = 1;i <= array.length; ++i){
            if(result == array[i]){
                ++count;
            }else if(count > 1){
                --count;
            }else if(count == 0){
                result = array[i];
                count = 1;
            }
        }

        count = 0;
        for(int i = 0;i <= array.length;++i){
            if(result == array[i]){
                ++count;
            }
            return count > array.length/2?result:0;
        }
    }
    
}