lc414.第三大的数
约 197 字
预计阅读 1 分钟
- 设置三个哨兵a,b,c,依次为$a>b>c$如果一个数满足在区间内,则可以更新对应的数。
- 如果
num > a, c = b, b = a, a = num
- 如果
a > num > b, c = b, b = num
- 如果
b > num > c, c = num
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
class Solution {
public:
int thirdMax(vector<int>& nums) {
long a = LONG_MIN, b = LONG_MIN, c = LONG_MIN;
for(auto& num: nums) {
if(num > a) {
c = b;
b = a;
a = num;
} else if (num > b && num < a) {
c = b;
b = num;
} else if (num > c && num < b) {
c = num;
}
}
return c == LONG_MIN ? a : c;
}
};
|