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 ;
}
};
--------------------------------------------------------------------------------
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
Post a Comment