如果数组中多一半的数都是同一个,则称之为主要元素。给定一个整数数组,找到它的主要元素。若没有,返回-1。

示例 1:

输入:[1,2,5,9,5,9,5,5,5] 输出:5

示例 2:

输入:[3,2] 输出:-1

示例 3:

输入:[2,2,1,1,1,2,2] 输出:2

说明: 你有办法在时间复杂度为 O(N),空间复杂度为 O(1) 内完成吗?

/**
 * @param {number[]} nums
 * @return {number}
 */
var majorityElement = function(nums) {
    var len = nums.length;
    var count = 0,
        num,
        flag = -1,
        midLen = Math.floor(len/2) + 1;
    for(var i = 0; i < len; i++){
        if(count == 0){
            num = nums[i];
        }
        if(num == nums[i]){
            count ++;
        }else{
            count --;
        }
        
    }
    if(count > 0){
        var countLen = 0;
        for(var j = 0; j < len; j++){
            if(nums[j] == num){
                countLen++;
            }
            if(countLen == midLen){
                flag = num;
                break;
            }
        }
    }

    return flag;
};