leetcode 414 第三大的数

题意简述

求出一个数组第三个大的数,相同的数只算一个,如果没有第三大的数,输出最大数。

算法分析

维护当前最大值,次大值,第三大值。扫描每个数,更新它们。注意,最终判断第三大值是否为负无穷。

代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Solution {
public:
int thirdMax(vector<int> &nums) {
long a = LONG_MIN, b = LONG_MIN, c = LONG_MIN;
for (long num : nums) {
if (num > a) {
c = b;
b = a;
a = num;
} else if (a > num && num > b) {
c = b;
b = num;
} else if (b > num && num > c) {
c = num;
}
}
return c == LONG_MIN ? a : c;
}
};

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!