该算法的原理非常的巧妙,主要是利用主要元素要在数组中超过半数,所以就可以这样操作:
设置一个计数器,每次遇见主要元素加1,遇见其他任何的元素就减1,可想而知,因为多数元素是主要元素,最后肯定会是一个正数,那么利用这个就可以找出那个主要元素。那么问题就是如何让主要元素等于1,其他的元素等于-1.
举例说明:
[7, 7, 5, 7, 5, 1 | 5, 7 | 5, 5, 7, 7 | 7, 7, 7, 7]以此数组为例子来说明该方法如何的巧妙的完成上述的难题额,我们可以换个角度来思考这个问题,既然让主要元素是1并且最终会胜利,那么我们设置一个count计数器,让每次count为0时候遇见的元素,假设为主要元素,那么每次遇见该元素就加1,其他元素就减1。那么显然会出现两种情况:
情况一:
该元素是主要的元素,那么顺理成章完成任务。