Algorithm 在某些情况下,boyer-moore最大投票算法会失败吗?
考虑以下包含元素的数组:Algorithm 在某些情况下,boyer-moore最大投票算法会失败吗?,algorithm,boyer-moore,Algorithm,Boyer Moore,考虑以下包含元素的数组: 0 5 1 5 2 5 该算法不返回5作为多数元素,但在第一次传递结束时,将2视为计数为0的多数元素 以下是伪代码: num1 = array[0], count = 0; for(int n : array){ if (n == num1) count++; else if(count == 0) num1 = n; count = 1; else count--; }
0 5 1 5 2 5
该算法不返回5作为多数元素,但在第一次传递结束时,将2视为计数为0的多数元素
以下是伪代码:
num1 = array[0], count = 0;
for(int n : array){
if (n == num1)
count++;
else if(count == 0)
num1 = n;
count = 1;
else
count--;
}
在此迭代结束时,num1将包含元素“2”,计数将为0。
我应该如何让算法返回元素“5”?在最简单的形式中,算法会找到一个多数元素(如果存在的话):也就是说,一个元素重复出现在输入元素的一半以上。哦,我想我错过了“输入中超过一半的元素”部分。