0
点赞
收藏
分享

微信扫一扫

LintCode 题目:第三大的数

描述

给定一个非空数组,返回此数组中第三大的数。如果不存在,则返回数组中最大的数。要求算法时间复杂度必须是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];

即可:
LintCode 题目:第三大的数_数组

 

 


举报

相关推荐

0 条评论