Third Maximum Number @LeetCode

PROBLEM :

Given a non-empty array of integers, return the third maximum number in this array. If it does not exist, return the maximum number. The time complexity must be in O(n).

Example 1:
Input: [3, 2, 1]

Output: 1

Explanation: The third maximum is 1.
Example 2:
Input: [1, 2]

Output: 2

Explanation: The third maximum does not exist, so the maximum (2) is returned instead.
Example 3:
Input: [2, 2, 3, 1]

Output: 1

Explanation: Note that the third maximum here means the third maximum distinct number.
Both numbers with value 2 are both considered as second maximum.

--------------------------------------------------------------------------------
SIMPLE c++ IMPLEMENTATION :
--------------------------------------------------------------------------------

class Solution {
public:
    int thirdMax(vector<int>& nums) {
        if(nums.size()==1)
            return nums[0] ;
        else if(nums.size()==2)
            return nums[0]>nums[1]?nums[0]:nums[1] ;
       
        long first,second,third ;
        first= (long)INT_MIN-1;
        second= (long)INT_MIN-1 ;
        third= (long)INT_MIN-1 ;
       
        for(int i=0;i<nums.size();i++){
           
            if(nums[i]==first||(nums[i]==second||nums[i]==third))
                continue ;
           
            if(nums[i]>=first){
                third=second ;
                second=first ;
                first=nums[i] ;
            }
           
            else if(nums[i]>=second){
                third=second ;
                second=nums[i] ;
            }
           
            else if(nums[i]>=third)
                third=nums[i] ;
        }
       
        return (third== (long)INT_MIN-1)?(first>second?first:second):third ;
    }
};

--------------------------------------------------------------------------------

Comments

Popular posts from this blog

Count ways to N'th Stair(Order does not matter)

Replace all ‘0’ with ‘5’ in an input Integer

Chocolate Distribution Problem

Remove characters from the first string which are present in the second string

Primality Test ( CodeChef Problem code: PRB01 )