题目:求取一个数组中第三大的数,数组中至少有一个数据
eg 输入:a[1,2,3] 输出:1 第三大的数为1
输入: a[1,2] 输出:2 当数组中的数据少于三个时,输出最大的数据
输入:a[1,1,3,2,3,4] 输出:2
解题思路:给出的一串数组先有两种情况:
第一种情况为当数据的个数大于或者等于3个数据,只需要考虑前三个最大的数据,首先设置三个变量:firstNum secondNum thirdNum;将三个变量设置为最小的数据,首先将输入的数据和最大的数据firstNum进行比较,如果firstNum < 输入数据a
则将前三个数据进行交换;如果firstNum > a && secondNum < a;先将thirdNum = secondNum,再将数据secondNum = a;如果secondNum > a && thirdNum <a;则将 thirdNum = a;
第二种情况就直接将获取的最大数据进行输出
具体代码
int thirdMax(vector<int>& nums)
{
long long firstNum = LONG_MIN, secondNum = LONG_MIN, thirdNum = LONG_MIN;
for (auto& a:nums)
{
if (firstNum < a)
{
thirdNum = secondNum;
secondNum = firstNum;
firstNum = a;
}
else if (firstNum > a && secondNum < a)
{
thirdNum = secondNum;
secondNum = a;
}
if (secondNum > a && thirdNum < a)
{
thirdNum = a;
}
}
if (thirdNum == LONG_MIN)
{
cout << "thirdNum == LONG_MIN" << endl;
return firstNum;
}
else
{
cout << "return thirdNum" << endl;
return thirdNum;
}
}