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];
    }
}



目录
相关文章
|
11月前
|
算法 测试技术
LeetCode-1004. 最大连续1的个数 III
LeetCode-1004. 最大连续1的个数 III
|
11月前
leetcode-414:第三大的数
leetcode-414:第三大的数
53 0
|
11月前
leetcode-485:最大连续1的个数
leetcode-485:最大连续1的个数
63 0
|
存储 算法
LeetCode-306 累加数
LeetCode-306 累加数
|
11月前
|
C语言
leetcode:191. 位1的个数
leetcode:191. 位1的个数
36 0
|
11月前
|
机器学习/深度学习
leetcode-507:完美数
leetcode-507:完美数
50 0
|
11月前
leetcode-191:位1的个数
leetcode-191:位1的个数
58 0
|
11月前
|
算法
leetcode-306:累加数
leetcode-306:累加数
42 0
|
11月前
leetcode-1610:可见点的最大数目
leetcode-1610:可见点的最大数目
55 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等