2

考虑以下带有元素的数组:

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

4

0 回答 0