题目
法一(排序法)
代码
int compare(const void*a,const void*b)
{
return(*(int*)a-*(int*)b);
}
int majorityElement(int* nums, int numsSize) {
int mid=numsSize/2;
//1.升序排列
qsort(nums,numsSize,sizeof(int),compare);
//2.下标为mid的数就是返回值
return nums[mid];
}
法二(投票法)
时间复杂度:O(N)
空间复杂度:O(1)
代码
int majorityElement(int* nums, int numsSize) {
int count=1;
//如果第一个数是众数
int candidate=nums[0];
int i;
for(i=1;i<numsSize;i++)
{
if(count==0)
{
candidate=nums[i];
count=0;
}
if(nums[i]==candidate)
{
count++;
}
else
{
count--;
}
}
return candidate;
}