Skip to content

Commit 89a11e0

Browse files
committed
feat: add solutions to lc problem: No.0414. Third Maximum Number
1 parent 6354e86 commit 89a11e0

File tree

9 files changed

+239
-21
lines changed

9 files changed

+239
-21
lines changed

solution/0200-0299/0215.Kth Largest Element in an Array/README.md

+1-3
Original file line numberDiff line numberDiff line change
@@ -118,9 +118,7 @@ public:
118118
while (nums[++i] < x);
119119
while (nums[--j] > x);
120120
if (i < j) {
121-
int t = nums[i];
122-
nums[i] = nums[j];
123-
nums[j] = t;
121+
swap(nums[i], nums[j]);
124122
}
125123
}
126124
if (j < k) {

solution/0200-0299/0215.Kth Largest Element in an Array/README_EN.md

+1-3
Original file line numberDiff line numberDiff line change
@@ -111,9 +111,7 @@ public:
111111
while (nums[++i] < x);
112112
while (nums[--j] > x);
113113
if (i < j) {
114-
int t = nums[i];
115-
nums[i] = nums[j];
116-
nums[j] = t;
114+
swap(nums[i], nums[j]);
117115
}
118116
}
119117
if (j < k) {

solution/0200-0299/0215.Kth Largest Element in an Array/Solution.cpp

+1-3
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,7 @@ class Solution {
1515
while (nums[++i] < x);
1616
while (nums[--j] > x);
1717
if (i < j) {
18-
int t = nums[i];
19-
nums[i] = nums[j];
20-
nums[j] = t;
18+
swap(nums[i], nums[j]);
2119
}
2220
}
2321
if (j < k) {

solution/0400-0499/0414.Third Maximum Number/README.md

+86-1
Original file line numberDiff line numberDiff line change
@@ -58,15 +58,100 @@
5858
<!-- 这里可写当前语言的特殊实现逻辑 -->
5959

6060
```python
61-
61+
class Solution:
62+
def thirdMax(self, nums: List[int]) -> int:
63+
m1 = m2 = m3 = float('-inf')
64+
for num in nums:
65+
if num == m1 or num == m2 or num == m3:
66+
continue
67+
if num > m1:
68+
m3, m2, m1 = m2, m1, num
69+
elif num > m2:
70+
m3, m2 = m2, num
71+
elif num > m3:
72+
m3 = num
73+
return m1 if m3 == float('-inf') else m3
6274
```
6375

6476
### **Java**
6577

6678
<!-- 这里可写当前语言的特殊实现逻辑 -->
6779

6880
```java
81+
class Solution {
82+
public int thirdMax(int[] nums) {
83+
long m1 = Long.MIN_VALUE;
84+
long m2 = Long.MIN_VALUE;
85+
long m3 = Long.MIN_VALUE;
86+
for (int num : nums) {
87+
if (num == m1 || num == m2 || num == m3) {
88+
continue;
89+
}
90+
if (num > m1) {
91+
m3 = m2;
92+
m2 = m1;
93+
m1 = num;
94+
} else if (num > m2) {
95+
m3 = m2;
96+
m2 = num;
97+
} else if (num > m3) {
98+
m3 = num;
99+
}
100+
}
101+
return (int) (m3 == Long.MIN_VALUE ? m1 : m3);
102+
}
103+
}
104+
```
105+
106+
### **C++**
107+
108+
```cpp
109+
class Solution {
110+
public:
111+
int thirdMax(vector<int>& nums) {
112+
long m1 = LONG_MIN, m2 = LONG_MIN, m3 = LONG_MIN;
113+
for (int& num : nums) {
114+
if (num == m1 || num == m2 || num == m3) continue;
115+
if (num > m1) {
116+
m3 = m2;
117+
m2 = m1;
118+
m1 = num;
119+
} else if (num > m2) {
120+
m3 = m2;
121+
m2 = num;
122+
} else if (num > m3) {
123+
m3 = num;
124+
}
125+
}
126+
return (int) (m3 == LONG_MIN ? m1 : m3);
127+
}
128+
};
129+
```
69130
131+
### **Go**
132+
133+
```go
134+
import "math"
135+
136+
func thirdMax(nums []int) int {
137+
m1, m2, m3 := math.MinInt64, math.MinInt64, math.MinInt64
138+
for _, num := range nums {
139+
if num == m1 || num == m2 || num == m3 {
140+
continue
141+
}
142+
if num > m1 {
143+
m3, m2, m1 = m2, m1, num
144+
} else if num > m2 {
145+
m3, m2 = m2, num
146+
} else if num > m3 {
147+
m3 = num
148+
}
149+
}
150+
if m3 == math.MinInt64 {
151+
return m1
152+
}
153+
return m3
154+
}
70155
```
71156

72157
### **...**

solution/0400-0499/0414.Third Maximum Number/README_EN.md

+86-1
Original file line numberDiff line numberDiff line change
@@ -50,13 +50,98 @@ Both numbers with value 2 are both considered as second maximum.
5050
### **Python3**
5151

5252
```python
53-
53+
class Solution:
54+
def thirdMax(self, nums: List[int]) -> int:
55+
m1 = m2 = m3 = float('-inf')
56+
for num in nums:
57+
if num == m1 or num == m2 or num == m3:
58+
continue
59+
if num > m1:
60+
m3, m2, m1 = m2, m1, num
61+
elif num > m2:
62+
m3, m2 = m2, num
63+
elif num > m3:
64+
m3 = num
65+
return m1 if m3 == float('-inf') else m3
5466
```
5567

5668
### **Java**
5769

5870
```java
71+
class Solution {
72+
public int thirdMax(int[] nums) {
73+
long m1 = Long.MIN_VALUE;
74+
long m2 = Long.MIN_VALUE;
75+
long m3 = Long.MIN_VALUE;
76+
for (int num : nums) {
77+
if (num == m1 || num == m2 || num == m3) {
78+
continue;
79+
}
80+
if (num > m1) {
81+
m3 = m2;
82+
m2 = m1;
83+
m1 = num;
84+
} else if (num > m2) {
85+
m3 = m2;
86+
m2 = num;
87+
} else if (num > m3) {
88+
m3 = num;
89+
}
90+
}
91+
return (int) (m3 == Long.MIN_VALUE ? m1 : m3);
92+
}
93+
}
94+
```
95+
96+
### **C++**
97+
98+
```cpp
99+
class Solution {
100+
public:
101+
int thirdMax(vector<int>& nums) {
102+
long m1 = LONG_MIN, m2 = LONG_MIN, m3 = LONG_MIN;
103+
for (int& num : nums) {
104+
if (num == m1 || num == m2 || num == m3) continue;
105+
if (num > m1) {
106+
m3 = m2;
107+
m2 = m1;
108+
m1 = num;
109+
} else if (num > m2) {
110+
m3 = m2;
111+
m2 = num;
112+
} else if (num > m3) {
113+
m3 = num;
114+
}
115+
}
116+
return (int) (m3 == LONG_MIN ? m1 : m3);
117+
}
118+
};
119+
```
59120
121+
### **Go**
122+
123+
```go
124+
import "math"
125+
126+
func thirdMax(nums []int) int {
127+
m1, m2, m3 := math.MinInt64, math.MinInt64, math.MinInt64
128+
for _, num := range nums {
129+
if num == m1 || num == m2 || num == m3 {
130+
continue
131+
}
132+
if num > m1 {
133+
m3, m2, m1 = m2, m1, num
134+
} else if num > m2 {
135+
m3, m2 = m2, num
136+
} else if num > m3 {
137+
m3 = num
138+
}
139+
}
140+
if m3 == math.MinInt64 {
141+
return m1
142+
}
143+
return m3
144+
}
60145
```
61146

62147
### **...**
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
class Solution {
2+
public:
3+
int thirdMax(vector<int>& nums) {
4+
long m1 = LONG_MIN, m2 = LONG_MIN, m3 = LONG_MIN;
5+
for (int& num : nums) {
6+
if (num == m1 || num == m2 || num == m3) continue;
7+
if (num > m1) {
8+
m3 = m2;
9+
m2 = m1;
10+
m1 = num;
11+
} else if (num > m2) {
12+
m3 = m2;
13+
m2 = num;
14+
} else if (num > m3) {
15+
m3 = num;
16+
}
17+
}
18+
return (int) (m3 == LONG_MIN ? m1 : m3);
19+
}
20+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import "math"
2+
3+
func thirdMax(nums []int) int {
4+
m1, m2, m3 := math.MinInt64, math.MinInt64, math.MinInt64
5+
for _, num := range nums {
6+
if num == m1 || num == m2 || num == m3 {
7+
continue
8+
}
9+
if num > m1 {
10+
m3, m2, m1 = m2, m1, num
11+
} else if num > m2 {
12+
m3, m2 = m2, num
13+
} else if num > m3 {
14+
m3 = num
15+
}
16+
}
17+
if m3 == math.MinInt64 {
18+
return m1
19+
}
20+
return m3
21+
}

solution/0400-0499/0414.Third Maximum Number/Solution.java

+10-10
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,21 @@ public int thirdMax(int[] nums) {
33
long m1 = Long.MIN_VALUE;
44
long m2 = Long.MIN_VALUE;
55
long m3 = Long.MIN_VALUE;
6-
for (int x : nums) {
7-
if (x == m1 || x == m2 || x == m3) {
6+
for (int num : nums) {
7+
if (num == m1 || num == m2 || num == m3) {
88
continue;
99
}
10-
if (x > m1) {
10+
if (num > m1) {
1111
m3 = m2;
1212
m2 = m1;
13-
m1 = x;
14-
} else if (x > m2) {
13+
m1 = num;
14+
} else if (num > m2) {
1515
m3 = m2;
16-
m2 = x;
17-
} else if (x > m3) {
18-
m3 = x;
16+
m2 = num;
17+
} else if (num > m3) {
18+
m3 = num;
1919
}
2020
}
21-
return (int) (m3 != Long.MIN_VALUE ? m3 : m1);
21+
return (int) (m3 == Long.MIN_VALUE ? m1 : m3);
2222
}
23-
}
23+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
class Solution:
2+
def thirdMax(self, nums: List[int]) -> int:
3+
m1 = m2 = m3 = float('-inf')
4+
for num in nums:
5+
if num == m1 or num == m2 or num == m3:
6+
continue
7+
if num > m1:
8+
m3, m2, m1 = m2, m1, num
9+
elif num > m2:
10+
m3, m2 = m2, num
11+
elif num > m3:
12+
m3 = num
13+
return m1 if m3 == float('-inf') else m3

0 commit comments

Comments
 (0)