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



目录
相关文章
|
9月前
|
机器学习/深度学习
leetcode-507:完美数
leetcode-507:完美数
45 0
|
9月前
leetcode-414:第三大的数
leetcode-414:第三大的数
49 0
|
Python
LeetCode 414. 第三大的数
给你一个非空数组,返回此数组中 第三大的数 。如果不存在,则返回数组中最大的数。
106 0
|
9月前
|
C语言
leetcode:191. 位1的个数
leetcode:191. 位1的个数
34 0
|
9月前
leetcode-191:位1的个数
leetcode-191:位1的个数
53 0
|
算法 Java 编译器
LeetCode 191. 位1的个数
编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 '1' 的个数(也被称为汉明重量)。
108 0
【每日一道LeetCode】——191. 位1的个数
【每日一道LeetCode】——191. 位1的个数
【每日一道LeetCode】——191. 位1的个数
|
算法
LeetCode 面试题 17.14. 最小K个数
设计一个算法,找出数组中最小的k个数。以任意顺序返回这k个数均可。
91 0
|
9月前
|
算法
leetcode-306:累加数
leetcode-306:累加数
38 0

热门文章

最新文章