考虑以下带有元素的数组:
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”?