一、题目描述
如果数组中多一半的数都是同一个,则称之为主要元素。给定一个整数数组,找到它的主要元素。若没有,返回-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
题目链接寻找众数
二、解题思路
可以采用投票法,初始票数为0,遇到是众数的元素,则+1,非众数元素则-1。如果存在众数,最后的票数一定大于0。
代码如下:
class Solution {
public int majorityElement(int[] nums) {
if(nums.length==1){
return nums[0];
}
int vote=0,x=0;
for (int i=0;i<nums.length;i++){
if(vote==0){
x=nums[i];
}
if(nums[i]==x){
vote++;
}else {
vote--;
}
}
return vote>0?x:-1;
}
}