Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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‎

Lines changed: 1 addition & 3 deletions
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‎

Lines changed: 1 addition & 3 deletions
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‎

Lines changed: 1 addition & 3 deletions
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‎

Lines changed: 86 additions & 1 deletion
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‎

Lines changed: 86 additions & 1 deletion
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
### **...**
Lines changed: 20 additions & 0 deletions
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+
};
Lines changed: 21 additions & 0 deletions
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‎

Lines changed: 10 additions & 10 deletions
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+
}
Lines changed: 13 additions & 0 deletions
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)

AltStyle によって変換されたページ (->オリジナル) /