来自力扣(LeetCode)
题目描述
数组中占比超过一半的元素称为“主要元素”,也就是说,数组某个元素出现的次数大于数组长度的一半,该元素可称为主要元素。给定一个整型数组,找到它的主要元素,如果没有则返回-1。
解决思路
双指针法
画图示意一下!
实现代码
public static int majorElement(int[] arr){
Arrays.sort(arr); //对无序数组进行排序(升序)
//对于此题而言,把握好i和j的边界非常关键
for (int i = 0; i <= arr.length/2; i++) {
for (int j = arr.length/2+i; j < arr.length; j++) {
//判断i下标和j下标值是否相等,如果相等直接返回该值
if(arr[i] == arr[j]){
return arr[i]; //返回该值,return arr[j]也是可以的
}
}
}
return -1; //如果没有找到,返回-1
}
public static void main(String[] args) {
int[] arr1 = {4,3,3,8,8,3,8,10,3,3,3};
System.out.println("数组中的主要元素为: "+majorElement(arr1));
}
}
运行结果如下: