一、算法原理
摩尔投票法的核心思想是通过遍历数组,维护一个候选的主要元素和一个计数器。在遍历过程中,如果遇到与候选元素相同的元素,则计数器加1;如果遇到不同的元素,则计数器减1。当计数器变为0时,说明之前的候选元素已经被“抵消”完了,此时需要选择一个新的候选元素,并将计数器重置为1。由于多数元素的出现次数超过了一半,因此在遍历结束后,候选元素一定是出现次数最多的那个元素(如果存在多数元素的话)。
二、算成流程
三、C语言代码实现
int majorityElement(int* nums, int numsSize) {
int t = 0;
int data = 0;
for(int i = 0;i<numsSize;i++)
{
if(t == 0)
{
data = nums[i];
}
if(data==nums[i])
{
t++;
}
if(data!=nums[i])
{
t--;
}
}
return data;
}