LintCode 题目:第三大的数

URL:https://www.lintcode.com/problem/third-maximum-number/description

描述

给定一个非空数组,返回此数组中第三大的数。如果不存在,则返回数组中最大的数。要求算法时间复杂度必须是O(n)。

您在真实的面试中是否遇到过这个题?  

样例

样例 1:

输入: num = [3, 2, 1]
输出: 1
解释: 第三大的数是 1.

样例 2:

输入: num = [1, 2]
输出: 2
解释: 第三大的数不存在, 所以返回最大的数 2 .

样例 3:

输入: num = [2, 2, 3, 1]
输出: 1
解释: 注意,要求返回第三大的数,是指第三大且唯一出现的数。
存在两个值为2的数,它们都排第二。

1.通过率:92%

添加函数:

static bool cmp(int a,int b){
        return a>b;
    }

在代码段中添加:

int n = nums.size();
        for (int i = 0; i < n; i++) {
            /* code */
            if(count(nums.begin(),nums.end(),nums[i])>1)
                nums.erase(nums.begin()+i);
        }
        sort(nums.begin(),nums.end(),cmp);
        n = nums.size();
        if(n<3)
            return nums[0];
        else
            return nums[2];

即可:

发布了303 篇原创文章 · 获赞 550 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/qq_42410605/article/details/103190997
今日推荐