多数要素が配列に存在する場合は true を返し、それ以外の場合は false を返すアルゴリズムを作成しようとしています。編集:2つの要素が等しいかどうかしかわかりません。つまり、< または > を使用できず、= のみを使用できます。編集:解決策は分割統治法でなければなりません。そのランタイムは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;
}