🏆个人主页:企鹅不叫的博客
🌈专栏
⭐️ 博主码云gitee链接:代码仓库地址
⚡若有帮助可以【关注+点赞+收藏】,大家一起进步!
💎一、题目
🏆1.题目描述
🏆2.原题链接
💎二、解题报告
🏆1.思路分析
🔑思路1:
首先将数组排序,返回下标是【n/2】位置的数组一定是众数
当n为基数或者为偶数的时候,数组下标的线覆盖最小值,或者覆盖最大值,那么其他任何情况下,只有中间位置会是包含两种情况🔑思路2:
目标条件:目标数据超过数组长度的一半,那么对数组,我们同时去掉两个不同的数字,到最后剩下的一个数就是
该数字。如果剩下两个,那么这两个也是一样的,就是结果),在其基础上把最后剩下的一个数字或者两个回到原来数组中,
将数组遍历一遍统计一下数字出现次数进行最终判断
🏆2.代码详解
int cmp(const void* a, const void* b)
{
return *(int*)a - *(int*)b;
}
int majorityElement(int* nums, int numsSize){
qsort(nums, numsSize, sizeof(nums[0]), cmp);
return nums[numsSize/2];
}