在数组中T[0:n-1]里,如果数组中有一半或以上的元素等于x,则x称为T的主元素。
不允许比较元素大小,只能比较元素是否相等,能否找到一个寻找主元素的算法?要求时间复杂度为O(n)
class tttt {
boolean master(int temp[]) {
int count = 1;
int seed = temp[0];
int N = 34;
for (int i = 1; i < N; i++) {
if (temp[i] == seed) {
count++;
} else {
if (count > 0) {
count--;
} else {
seed = temp[i];
}
}
}
count = 0;
for (int i = 0; i < N; i++) {
if (temp[i] == seed) {
count++;
}
}
if (count > N / 2) {
return true;
} else {
return false;
}
}
}