leetcode 414. 第三大的数 c++

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/glw0223/article/details/88846828

414. 第三大的数

分析

  • INT_MIN是int的最小值
class Solution {
public:
    int thirdMax(vector<int>& nums) {
        if(nums.size()==1)
            return nums[0];
        if(nums.size()==2)
            return max(nums[0],nums[1]);
        int max1=INT_MIN,max2=INT_MIN,max3=INT_MIN;
        bool flag=false;//nums里是否有INT_MIN
        for(int i=0;i<nums.size();++i){
            if(nums[i]==INT_MIN)
                flag=true;
            if(nums[i]>max1){
                max3=max2;
                max2=max1;
                max1=nums[i];
                continue;
            }
            if(nums[i]>max2&&nums[i]!=max1){
                max3=max2;
                max2=nums[i];
                continue;
            }
            if(nums[i]>max3&&nums[i]!=max2&&nums[i]!=max1){
                max3=nums[i];
            }
        }
        //nums无INT_MIN但max3为INT_MIN则没有第三大的数;max2为INT_MIN则max3也为INT_MIN故没有第三大的数
        if((max3==INT_MIN&!flag)||max2==INT_MIN)
            return max1;
        else 
            return max3;
    }
};

猜你喜欢

转载自blog.csdn.net/glw0223/article/details/88846828