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”?

在最简单的形式中,算法会找到一个多数元素(如果存在的话):也就是说,一个元素重复出现在输入元素的一半以上。哦,我想我错过了“输入中超过一半的元素”部分。