题目很简单,看了一遍思路就出来了,编程也没什么难度。无非就是用遍历一次寻找最大值的方法引申增加两个变量用于保存第二大与第三大的值,注意排除掉相等时的数值。
class Solution
{
public:
int thirdMax(vector &nums)
{
long f = -__LONG_MAX__, s = -__LONG_MAX__, t = -__LONG_MAX__;
//分别用三个变量保存最大的三个值
for (long num : nums)
{
if (num > f)
{
t = s;
s = f;
f = num;
}
else if (num < f && num > s) //排除num==f的情况
{
t = s;
s = num;
}
else if (num < s && num > t)
t = num; //排除num==s的情况
}
if (t != -__LONG_MAX__)
return t;
else
return f;
}
};
其实本题还可以用CPP提供的set容器,set容器具有的去重和排序特性完美适配本题,编码很简单就懒得写了。



