414. Third Maximum Number
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.
本题注意点是nums数组不是空集,本题考查Integer的特点,值得注意的是其equals的方法:比较此对象与指定对象。当且仅当参数不为null
,并且是一个与该对象包含相同int
值的Integer
对象时,结果为true
。
代码如下:
1 public class Solution { 2 public int thirdMax(int[] nums) { 3 Integer max1 = null; 4 Integer max2 = null; 5 Integer max3 = null; 6 for(Integer n:nums){ 7 if(n.equals(max1)||n.equals(max2)||n.equals(max3)) continue; 8 if(max1==null||n>max1){ 9 max3 = max2; 10 max2 = max1; 11 max1 = n; 12 }else if(max2==null||n>max2){ 13 max3 = max2; 14 max2 = n; 15 }else if(max3==null||n>max3){ 16 max3 = n; 17 } 18 } 19 return max3==null?max1:max3; 20 } 21 }