414. Third Maximum Number
Difficulty: Easy
Topics: Array
Similar Questions:
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. </pre> </p>
Solutions:
class Solution {
public:
int thirdMax(vector<int>& nums) {
int count = 0;
int first = INT_MIN;
int second = INT_MIN;
int third = INT_MIN;
for (auto& num : nums) {
if ((count >= 1 && num == first) || (count >= 2 && num == second) || (count >= 3 && num == third)) continue;
++count;
if (num >= first) {
third = second;
second = first;
first = num;
} else if (num >= second) {
third = second;
second = num;
} else if (num >= third) {
third = num;
}
}
return count >= 3 ? third : first;
}
};