-
-
Notifications
You must be signed in to change notification settings - Fork 299
/
414.java
51 lines (45 loc) · 1.51 KB
/
414.java
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
__________________________________________________________________________________________________
sample 0 ms submission
public class Solution {
public int thirdMax(int[] nums) {
// first >> secound >> third
long first = Long.MIN_VALUE;
long second = Long.MIN_VALUE;
long third = Long.MIN_VALUE;
for (int i : nums) {
if (i > first) {
third = second;
second = first;
first = i;
} else if (i > second && i < first) {
third = second;
second = i;
} else if (i > third && i < second) {
third = i;
}
}
return third == Long.MIN_VALUE ? (int) first : (int) third;
}
}
__________________________________________________________________________________________________
sample 36348 kb submission
class Solution {
public int thirdMax(int[] nums) {
PriorityQueue<Long> heap = new PriorityQueue<Long>((n1, n2) -> {
if (n1 > n2) return 1;
else if (n1 < n2) return -1;
else return 0;
});
Long max = Long.MIN_VALUE;
HashSet<Long> val = new HashSet<>();
for (int n : nums) {
if (val.contains(Long.valueOf(n))) continue;
heap.add(Long.valueOf(n));
val.add(Long.valueOf(n));
if (heap.size() > 3) heap.poll();
max = Math.max(max, n);
}
return heap.size() == 3 ? (heap.poll().intValue()) : (int)(max.intValue());
}
}
__________________________________________________________________________________________________