求解数组中第三大数

这道题目起初作的很恼火哦。
记录一下。数组

问题:给定一个int数组,返回数组中第三大的数。若是存在,返回第三大值,若是不存在,返回最大值。
原题目:Leetcode 414
思路:查找三次,找到最大值时,将最大值赋值给次大值,将次大值赋值给第三大值。code

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时,会致使最后的判断失效。leetcode

相关文章
相关标签/搜索