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