Skip to content

Commit 78b6cba

Browse files
committed
feat: add solutions to lc problem: No.1491
No.1491.Average Salary Excluding the Minimum and Maximum Salary
1 parent d44534b commit 78b6cba

File tree

6 files changed

+191
-7
lines changed

6 files changed

+191
-7
lines changed

solution/1400-1499/1491.Average Salary Excluding the Minimum and Maximum Salary/README.md

Lines changed: 70 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -55,13 +55,13 @@
5555

5656
<!-- 这里可写通用的实现逻辑 -->
5757

58-
遍历 `salary`,做三件事:
58+
**方法一:模拟**
5959

60-
- 记录总和
61-
- 记录最小值
62-
- 记录最大值
60+
按题意模拟即可。
6361

64-
然后进行对应的计算,注意进行类型转换即可。
62+
遍历数组,求出最大值和最小值,并且累加和,然后求出去掉最大值和最小值后的平均值。
63+
64+
时间复杂度 $O(n)$。其中 $n$ 为数组 `salary` 的长度。
6565

6666
<!-- tabs:start -->
6767

@@ -70,15 +70,79 @@
7070
<!-- 这里可写当前语言的特殊实现逻辑 -->
7171

7272
```python
73-
73+
class Solution:
74+
def average(self, salary: List[int]) -> float:
75+
s = sum(salary) - min(salary) - max(salary)
76+
return s / (len(salary) - 2)
7477
```
7578

7679
### **Java**
7780

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

8083
```java
84+
class Solution {
85+
public double average(int[] salary) {
86+
int s = 0;
87+
int mi = 10000000, mx = 0;
88+
for (int v : salary) {
89+
mi = Math.min(mi, v);
90+
mx = Math.max(mx, v);
91+
s += v;
92+
}
93+
s -= (mi + mx);
94+
return s * 1.0 / (salary.length - 2);
95+
}
96+
}
97+
```
8198

99+
### **C++**
100+
101+
```cpp
102+
class Solution {
103+
public:
104+
double average(vector<int>& salary) {
105+
int s = 0;
106+
int mi = 1e7, mx = 0;
107+
for (int v : salary) {
108+
s += v;
109+
mi = min(mi, v);
110+
mx = max(mx, v);
111+
}
112+
s -= (mi + mx);
113+
return (double) s / (salary.size() - 2);
114+
}
115+
};
116+
```
117+
118+
### **Go**
119+
120+
```go
121+
func average(salary []int) float64 {
122+
s := 0
123+
mi, mx := 10000000, 0
124+
for _, v := range salary {
125+
s += v
126+
mi = min(mi, v)
127+
mx = max(mx, v)
128+
}
129+
s -= (mi + mx)
130+
return float64(s) / float64(len(salary)-2)
131+
}
132+
133+
func max(a, b int) int {
134+
if a > b {
135+
return a
136+
}
137+
return b
138+
}
139+
140+
func min(a, b int) int {
141+
if a < b {
142+
return a
143+
}
144+
return b
145+
}
82146
```
83147

84148
### **Rust**

solution/1400-1499/1491.Average Salary Excluding the Minimum and Maximum Salary/README_EN.md

Lines changed: 65 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,13 +43,77 @@ Average salary excluding minimum and maximum salary is (2000) / 1 = 2000
4343
### **Python3**
4444

4545
```python
46-
46+
class Solution:
47+
def average(self, salary: List[int]) -> float:
48+
s = sum(salary) - min(salary) - max(salary)
49+
return s / (len(salary) - 2)
4750
```
4851

4952
### **Java**
5053

5154
```java
55+
class Solution {
56+
public double average(int[] salary) {
57+
int s = 0;
58+
int mi = 10000000, mx = 0;
59+
for (int v : salary) {
60+
mi = Math.min(mi, v);
61+
mx = Math.max(mx, v);
62+
s += v;
63+
}
64+
s -= (mi + mx);
65+
return s * 1.0 / (salary.length - 2);
66+
}
67+
}
68+
```
69+
70+
### **C++**
71+
72+
```cpp
73+
class Solution {
74+
public:
75+
double average(vector<int>& salary) {
76+
int s = 0;
77+
int mi = 1e7, mx = 0;
78+
for (int v : salary) {
79+
s += v;
80+
mi = min(mi, v);
81+
mx = max(mx, v);
82+
}
83+
s -= (mi + mx);
84+
return (double) s / (salary.size() - 2);
85+
}
86+
};
87+
```
88+
89+
### **Go**
90+
91+
```go
92+
func average(salary []int) float64 {
93+
s := 0
94+
mi, mx := 10000000, 0
95+
for _, v := range salary {
96+
s += v
97+
mi = min(mi, v)
98+
mx = max(mx, v)
99+
}
100+
s -= (mi + mx)
101+
return float64(s) / float64(len(salary)-2)
102+
}
52103
104+
func max(a, b int) int {
105+
if a > b {
106+
return a
107+
}
108+
return b
109+
}
110+
111+
func min(a, b int) int {
112+
if a < b {
113+
return a
114+
}
115+
return b
116+
}
53117
```
54118

55119
### **Rust**
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
class Solution {
2+
public:
3+
double average(vector<int>& salary) {
4+
int s = 0;
5+
int mi = 1e7, mx = 0;
6+
for (int v : salary) {
7+
s += v;
8+
mi = min(mi, v);
9+
mx = max(mx, v);
10+
}
11+
s -= (mi + mx);
12+
return (double) s / (salary.size() - 2);
13+
}
14+
};
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
func average(salary []int) float64 {
2+
s := 0
3+
mi, mx := 10000000, 0
4+
for _, v := range salary {
5+
s += v
6+
mi = min(mi, v)
7+
mx = max(mx, v)
8+
}
9+
s -= (mi + mx)
10+
return float64(s) / float64(len(salary)-2)
11+
}
12+
13+
func max(a, b int) int {
14+
if a > b {
15+
return a
16+
}
17+
return b
18+
}
19+
20+
func min(a, b int) int {
21+
if a < b {
22+
return a
23+
}
24+
return b
25+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
class Solution {
2+
public double average(int[] salary) {
3+
int s = 0;
4+
int mi = 10000000, mx = 0;
5+
for (int v : salary) {
6+
mi = Math.min(mi, v);
7+
mx = Math.max(mx, v);
8+
s += v;
9+
}
10+
s -= (mi + mx);
11+
return s * 1.0 / (salary.length - 2);
12+
}
13+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
class Solution:
2+
def average(self, salary: List[int]) -> float:
3+
s = sum(salary) - min(salary) - max(salary)
4+
return s / (len(salary) - 2)

0 commit comments

Comments
 (0)