File tree Expand file tree Collapse file tree 6 files changed +191
-7
lines changed
solution/1400-1499/1491.Average Salary Excluding the Minimum and Maximum Salary Expand file tree Collapse file tree 6 files changed +191
-7
lines changed Original file line number Diff line number Diff line change 55
55
56
56
<!-- 这里可写通用的实现逻辑 -->
57
57
58
- 遍历 ` salary ` ,做三件事:
58
+ ** 方法一:模拟 **
59
59
60
- - 记录总和
61
- - 记录最小值
62
- - 记录最大值
60
+ 按题意模拟即可。
63
61
64
- 然后进行对应的计算,注意进行类型转换即可。
62
+ 遍历数组,求出最大值和最小值,并且累加和,然后求出去掉最大值和最小值后的平均值。
63
+
64
+ 时间复杂度 $O(n)$。其中 $n$ 为数组 ` salary ` 的长度。
65
65
66
66
<!-- tabs:start -->
67
67
70
70
<!-- 这里可写当前语言的特殊实现逻辑 -->
71
71
72
72
``` 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 )
74
77
```
75
78
76
79
### ** Java**
77
80
78
81
<!-- 这里可写当前语言的特殊实现逻辑 -->
79
82
80
83
``` 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
+ ```
81
98
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
+ }
82
146
```
83
147
84
148
### ** Rust**
Original file line number Diff line number Diff line change @@ -43,13 +43,77 @@ Average salary excluding minimum and maximum salary is (2000) / 1 = 2000
43
43
### ** Python3**
44
44
45
45
``` 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 )
47
50
```
48
51
49
52
### ** Java**
50
53
51
54
``` 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
+ }
52
103
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
+ }
53
117
```
54
118
55
119
### ** Rust**
Original file line number Diff line number Diff line change
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
+ };
Original file line number Diff line number Diff line change
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
+ }
Original file line number Diff line number Diff line change
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
+ }
Original file line number Diff line number Diff line change
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 )
You can’t perform that action at this time.
0 commit comments