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: [2, 2, 3, 1]Output: 1Explanation: Note that the third maximum here means the third maximum distinct number.Both numbers with value 2 are both considered as second maximum. 注意,重复的数字不算。 这题本没啥难度,一个小tricky 就是用Integer 来初始化 max1, max2, ,max3, 因为Integer 可以被初始化成null 而不是 Integer.MIN_VALUE, 特别在比大小时候null 比 Integer.MIN_VALUE 有价值。
class Solution { public int thirdMax(int[] nums) { Integer max1, max2, max3; max1 = null; max2 = null; max3 = null; for(Integer num: nums){ if(num.equals(max1) || num.equals(max2) || num.equals(max3)) continue; if(max1 ==null || num> max1){ max3 = max2; max2 = max1; max1 = num; } else if(max2 ==null || num>max2){ max3 = max2; max2 = num; } else if(max3 ==null || num>max3){ max3 = num; } } return max3 ==null? max1:max3; }}