遍历数组,维护三个变量记录最大的三个数,如果遇到相同的数直接跳过,遇到不同的数就跟当前记录的三个最大数比较大小。
class Solution {
public:
int thirdMax(vector<int>& nums) {
long long m1 = -9e9, m2 = m1, m3 = m1;
for(auto n : nums){
if(n == m1 || n == m2 || n == m3) continue;
if(n > m1){
m3 = m2;
m2 = m1;
m1 = n;
}else if(n > m2){
m3 = m2;
m2 = n;
}else if(n > m3){
m3 = n;
}
}
if(m3 == -9e9) return m1;
return m3;
}
};