414. Third Maximum Number

TreeSet

1
2
3
4
5
6
7
8
9
10
11
12
13
class Solution {
public int thirdMax(int[] nums) {
TreeSet<Integer> set = new TreeSet<>();
for (int num : nums) {
set.add(num);
if (set.size() > 3) {
set.remove(set.first());
}
}

return set.size() == 3 ? set.first() : set.last();
}
}

一次遍历

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Solution {
public int thirdMax(int[] nums) {
Integer a = null, b = null, c = null; // a > b > c
for (int num : nums) {
if (a == null || num > a) {
c = b;
b = a;
a = num;
} else if (num < a && (b == null || num > b)) {
c = b;
b = num;
} else if ((b != null && num < b) && (c == null || num > c)) {
c = num;
}
}

return c == null ? a : c;
}
}

References

414. Third Maximum Number