4.21--leetcode-面试题17.10主要元素

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

int majorityElement(int* nums, int numsSize){
    int res=nums[0],i;
    int cnt=0;
    for(i=0;i<numsSize;i++){
        if(cnt==0)
        res=nums[i];
        if(res==nums[i])
        cnt++;
        else
        cnt--;
    }
    for(i=0,cnt=0;i<numsSize;i++)
    if(nums[i]==res)
    cnt++;
    if(cnt<numsSize/2)
    return -1;
    else
    return res;
}

这题目用的又是新方法,用摩尔投票法来写,遇到同样的数cnt加一否则减一,如此往后。

你可能感兴趣的:(4.21--leetcode-面试题17.10主要元素)