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:
1 2 3 4 5
Input: [3, 2, 1]
Output: 1
Explanation: The third maximum is 1.
Example 2:
1 2 3 4 5
Input: [1, 2]
Output: 2
Explanation: The third maximum does not exist, so the maximum (2) is returned instead.
Example 3:
1 2 3 4 5 6
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.
classSolution{ publicintthirdMax(int[] nums){ if (nums.length == 0) return0; if (nums.length == 1) return nums[1]; if (nums.length == 2) return Math.max(nums[0], nums[1]); Integer a = null; Integer b = null; Integer c = null; for (int i=0; i<nums.length; i++) { Integer d = nums[i]; if (d.equals(a) || d.equals(b) || d.equals(c)) continue; if (a == null || d > a) { c = b; b = a; a = d; } elseif ( b == null || d > b) { c = b; b = d; } elseif (c == null || d > c) { c = d; }