414.Third Maximum Number (第三最大數)

題目

Given an integer array nums, return the third distinct maximum number in this array. If the third maximum does not exist, return the maximum number.

給定一個整數陣列nums,返回這個陣列中的第三個不同的最大數字。如果第三個最大數字不存在,則返回最大數字。


Example 1

1
2
3
4
5
6
Input: nums = [3,2,1]
Output: 1
Explanation:
The first distinct maximum is 3.
The second distinct maximum is 2.
The third distinct maximum is 1.

Example 2

1
2
3
4
5
6
Input: nums = [1,2]
Output: 2
Explanation:
The first distinct maximum is 2.
The second distinct maximum is 1.
The third distinct maximum does not exist, so the maximum (2) is returned instead.

Example 3

1
2
3
4
5
6
Input: nums = [2,2,3,1]
Output: 1
Explanation:
The first distinct maximum is 3.
The second distinct maximum is 2 (both 2's are counted together since they have the same value).
The third distinct maximum is 1.

Constraints:

  • 1 <= nums.length <= 104
  • -231 <= nums[i] <= 231 - 1

我的解題

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class Solution {
public int thirdMax(int[] nums) {
long firstMax = Long.MIN_VALUE;
long secondMax = Long.MIN_VALUE;
long thirdMax = Long.MIN_VALUE;

for (int num : nums) {
if (num > firstMax) {
thirdMax = secondMax;
secondMax = firstMax;
firstMax = num;
} else if (num < firstMax && num > secondMax) {
thirdMax = secondMax;
secondMax = num;
} else if (num < secondMax && num > thirdMax) {
thirdMax = num;
}
}

if (thirdMax != Long.MIN_VALUE) {
return (int) thirdMax;
} else {
return (int) firstMax;
}
}
}