给定一个整型数组,找出主元素,它在数组中的出现次数严格大于数组元素个数的二分之一。
样例
给出数组[1,1,1,1,2,2,2],返回 1
代码如下
public int majorityNumber(ArrayList<Integer> nums) {
// write your code
int max=0;
int len = nums.size();
Collections.sort(nums);
int temp = nums.get(len/2);
for(int i = len/2;i<len;i++){
if(temp == nums.get(i)){
max++;
}
}
for(int i = len/2;i>=0;i--){
if(temp == nums.get(i)){
max++;
}
}
if(max>len/2){
return temp;
}else{
return 0;
}
}
题目中又说要严格大于数组个数的二分之一,所以先给数组先排序。如果存在的话那数组中间的那个数一定是主元素。所以只需要计算和中间元素相同的个数,然后判断是否大于二分之一就可以了。