这道题目起初做的很恼火哦。
记录一下。
问题:给定一个int数组,返回数组中第三大的数。如果存在,返回第三大值,如果不存在,返回最大值。
原题目:Leetcode 414
思路:查找三次,找到最大值时,将最大值赋值给次大值,将次大值赋值给第三大值。
int thirdMax(int* nums, int numsSize){
long max1 = LONG_MIN;
long max2 = LONG_MIN;
long max3 = LONG_MIN;
for (int i = 0; i < numsSize; i++)
{
if (max1 < nums[i])
{
max3 = max2;
max2 = max1;
max1 = nums[i];//max
}
if (max2 < nums[i] && nums[i] < max1)
{
max3 = max2;
max2 = nums[i];
}
if (max3 < nums[i] && nums[i] < max2)
{
max3 = nums[i];
}
}
if (max3 == LONG_MIN)
return max1;
return max3;
}
初始值设为了LONG_MIN,因为如果第三大值是INT_MIN时,会导致最后的判断失效。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。