本文共 1066 字,大约阅读时间需要 3 分钟。
寻找数组中的主要元素
为了找出数组中的“主要元素”,即出现次数超过数组长度一半的元素,我们可以使用一种高效的双指针方法。以下是详细的解决思路和实现代码:
这种方法的时间复杂度为 O(n log n),主要来自于排序步骤,之后的双指针遍历仅需 O(n) 时间。
public class MajorElement { public static int majorElement(int[] arr) { if (arr == null || arr.length == 0) { return -1; } Arrays.sort(arr); int n = arr.length; int i = 0, j = n / 2; while (i < j) { if (arr[i] == arr[j]) { return arr[i]; } else if (arr[i] < arr[j]) { i++; } else { j--; } } return -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)); }}
运行结果如下:
数组中的主要元素为: 8
通过对数组进行排序并使用双指针法,我们能够高效地找到出现次数超过一半的主要元素。这种方法在时间复杂度上是优化的,适用于处理较大的数组。
转载地址:http://hcpzz.baihongyu.com/