我试图编写一个算法,如果数组中存在多数元素,则返回 true,否则返回 false。编辑:我只能判断两个元素是否相等。这意味着我不能使用 < 或 >,只能使用 =。编辑:解决方案应该采用分而治之的方法。它的运行时不应该超过nlogn,我用java写了一些东西,但我不确定它是否正确以及如何计算运行时..这是我得到的:
public static boolean MajorityBoolean(int[] arr) {
int c;
int n = arr.length;
for (int i = 0; i < n; i = i + 2) {
System.out.println("*");
if ((arr[i] == arr[(i + 1)%n]) || ((arr[i] == arr[(i - 1+n)%n]))) {
c = 0;
for (int j = 0; j < n; j = j + 1)
if (arr[j] == arr[i])
c = c + 1;
if (c > n / 2)
return true;
}
}
return false;
}