-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy paththird-maximum-number.cs
72 lines (58 loc) · 1.63 KB
/
third-maximum-number.cs
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
public class Solution {
public int ThirdMax(int[] nums)
{
int first = 0, second = 0, third = 0;
bool firstFound = false, secondFound = false, thirdFound = false;
foreach (var num in nums)
{
if (firstFound is false)
{
firstFound = true;
first = num;
continue;
}
if (secondFound is false)
{
if (num == first)
{
continue;
}
secondFound = true;
second = num;
if (second > first)
{
(first, second) = (second, first);
}
continue;
}
if (thirdFound is false)
{
if (num == first || num == second)
{
continue;
}
thirdFound = true;
Adjust(num);
continue;
}
if (num == first || num == second || num == third || num < third)
{
continue;
}
Adjust(num);
}
void Adjust(int num)
{
third = num;
if (third > second)
{
(second, third) = (third, second);
}
if (second > first)
{
(first, second) = (second, first);
}
}
return thirdFound ? third : first;
}
}