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).
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.Git hub link : link
Solution
- We need to have 3 variables max1, max2 and max3
- In the initial 3 iteration all variables would be assigned null values based on the index
- We need to check if n is greater than max1 . If yes then we need to swap the values
- Next we need to check if n is greater than max2
- Finally we would get the third max number
package Algorithms.Arrays; public class ThirdMaxNumber { public static int get(int [] arr) { Integer max1=null; Integer max2=null; Integer max3=null; //loop through the array for(Integer n : arr) { if(n.equals(max1) || n.equals(max2) || n.equals(max3)) { continue; } else if(max1==null || n> max1) { max3=max2; max2=max1; max1=n; } else if(max2==null || n> max2) { max3=max2; max2=n; } else if(max3==null || n> max3) { max3=n; } } return max3==null?max1 :max3; } }
No comments:
Post a Comment