less than 1 minute read

<-E 414> Third Maximum Number

class Solution {
public:
    int thirdMax(vector<int>& nums) {
        if (nums.size() == 1) 
            return nums[0];
        if (nums.size() == 2) 
            return nums[0] > nums[1] ? nums[0] : nums[1];
    
        int max1 = nums[0];
        int max2 = numeric_limits<int>::min();
        int max3 = numeric_limits<int>::min();
        bool has_int_min = false;
        for (int i = 0; i < nums.size(); i++) {
            if (nums[i] == INT_MIN) 
                has_int_min = true;
            if (nums[i] > max1) {
                max3 = max2;
                max2 = max1;
                max1 = nums[i];
            } else if (nums[i] != max1) {
                if (nums[i] > max2) {
                    max3 = max2;
                    max2 = nums[i];
                } else if (nums[i] != max2) {
                    if (nums[i] > max3) {
                        max3 = nums[i];
                    }
                }
            }
        }
        if (max3 == max2) 
            return max1;
        if (max3 != INT_MIN) 
            return max3;
        else if (has_int_min) 
            return max3;
        else 
            return max1;
    }
};