leetcode:414. 第三大的数

简介: leetcode:414. 第三大的数

一、题目

 

函数原型:int thirdMax(int* nums, int numsSize)

二、思路

将数组降序排序。

如果数组元素个数小于3,直接返回第一个元素;

如果数组元素个数大于等于3,且不同元素个数小于3,直接返回第一个元素;

如果数组元素个数大于等于3,且不同元素个数大于等于3,遍历数组,直到遇到第三大的数(注意不是第三个数,因为前面个很可能有多个相同的数)。

三、代码

int cmp(const void *e1,const void *e2)
{
    return *(int*)e2>*(int*)e1;
}
int thirdMax(int* nums, int numsSize)
{
    qsort(nums,numsSize,sizeof(int),cmp);//降序排序数组
    if(numsSize<3)//数组元素个数小于3
    {
        return nums[0];
    }
    else//数组元素个数大于等于3
    {
        int i=0;//下标,遍历数组
        int j=1;//计数器,统计遇到不同数的个数
        for(i=0;i<numsSize-1;i++)
        {
            if(j==3)//遇到第三大的数且与前面的数字都不相同
                break;
            if(nums[i+1]!=nums[i])
                j++;
        }
        if(j<3)//虽然数组元素个数大于等于3,但是不同的数小于3,因此和数组元素小于3的结果一样
            return nums[0];
        else//数组元素个数大于等于3,且不同数的个数也大于等于3
            return nums[i];
    }
}



目录
相关文章
|
13天前
leetcode-414:第三大的数
leetcode-414:第三大的数
24 0
|
13天前
|
算法
【力扣】191.位 1 的个数
【力扣】191.位 1 的个数
|
13天前
|
C语言
leetcode:191. 位1的个数
leetcode:191. 位1的个数
14 0
|
13天前
|
机器学习/深度学习
leetcode-507:完美数
leetcode-507:完美数
24 0
|
9月前
|
存储 算法
LeetCode-306 累加数
LeetCode-306 累加数
|
13天前
|
算法
leetcode-306:累加数
leetcode-306:累加数
20 0
|
13天前
leetcode-191:位1的个数
leetcode-191:位1的个数
24 0
【剑指offer】-和为S的两个数-38/67
【剑指offer】-和为S的两个数-38/67
|
13天前
牛客网-最小的k个数
牛客网-最小的k个数
17 0

热门文章

最新文章