43
43
44
44
** 方法一:模拟**
45
45
46
- 直接遍历 ` nums ` ,统计可被 3 整除的偶数的和,以及可被 3 整除的偶数的个数,最后返回两者的商即可。注意,如果没有可被 3 整除的偶数,返回 0 。
46
+ 我们注意到,可被 $3$ 整除的偶数一定是 $6$ 的倍数,因此我们只需要遍历数组,统计所有 $6$ 的倍数的和与个数,然后计算平均值即可 。
47
47
48
- 时间复杂度 $O(n)$,空间复杂度 $O(1)$。其中 $n$ 为数组 ` nums ` 的长度 。
48
+ 时间复杂度 $O(n)$,其中 $n$ 是数组的长度。 空间复杂度 $O(1)$。
49
49
50
50
<!-- tabs:start -->
51
51
57
57
class Solution :
58
58
def averageValue (self , nums : List[int ]) -> int :
59
59
s = n = 0
60
- for v in nums:
61
- if v % 6 == 0 :
62
- s += v
60
+ for x in nums:
61
+ if x % 6 == 0 :
62
+ s += x
63
63
n += 1
64
64
return 0 if n == 0 else s // n
65
65
```
@@ -72,9 +72,9 @@ class Solution:
72
72
class Solution {
73
73
public int averageValue (int [] nums ) {
74
74
int s = 0 , n = 0 ;
75
- for (int v : nums) {
76
- if (v % 6 == 0 ) {
77
- s += v ;
75
+ for (int x : nums) {
76
+ if (x % 6 == 0 ) {
77
+ s += x ;
78
78
++ n;
79
79
}
80
80
}
@@ -90,9 +90,9 @@ class Solution {
90
90
public:
91
91
int averageValue(vector<int >& nums) {
92
92
int s = 0, n = 0;
93
- for (int v : nums) {
94
- if (v % 6 == 0) {
95
- s += v ;
93
+ for (int x : nums) {
94
+ if (x % 6 == 0) {
95
+ s += x ;
96
96
++n;
97
97
}
98
98
}
@@ -105,10 +105,10 @@ public:
105
105
106
106
```go
107
107
func averageValue(nums []int) int {
108
- s, n := 0, 0
109
- for _, v := range nums {
110
- if v %6 == 0 {
111
- s += v
108
+ var s, n int
109
+ for _, x := range nums {
110
+ if x %6 == 0 {
111
+ s += x
112
112
n++
113
113
}
114
114
}
@@ -119,43 +119,34 @@ func averageValue(nums []int) int {
119
119
}
120
120
```
121
121
122
- ### ** C**
123
-
124
- ``` c
125
- int averageValue (int * nums, int numsSize) {
126
- int sum = 0;
127
- int n = 0;
128
- for (int i = 0; i < numsSize; i++) {
129
- if (nums[ i] % 6 == 0) {
130
- sum += nums[ i] ;
131
- n++;
132
- }
133
- }
134
-
135
- if (n == 0) {
136
- return 0;
137
- }
138
- return sum / n;
139
- }
140
- ```
141
-
142
122
### ** TypeScript**
143
123
144
124
``` ts
145
125
function averageValue(nums : number []): number {
146
- let sum = 0;
126
+ let s = 0 ;
147
127
let n = 0 ;
148
- for (const num of nums) {
149
- if (num % 6 === 0) {
150
- sum += num ;
151
- n++ ;
128
+ for (const x of nums ) {
129
+ if (x % 6 === 0 ) {
130
+ s += x ;
131
+ ++ n ;
152
132
}
153
133
}
134
+ return n === 0 ? 0 : ~~ (s / n );
135
+ }
136
+ ```
137
+
138
+ ### ** C**
154
139
155
- if (n === 0) {
156
- return 0;
140
+ ``` c
141
+ int averageValue (int* nums, int numsSize){
142
+ int s = 0, n = 0;
143
+ for (int i = 0; i < numsSize; ++i) {
144
+ if (nums[ i] % 6 == 0) {
145
+ s += nums[ i] ;
146
+ ++n;
147
+ }
157
148
}
158
- return Math.floor(sum / n) ;
149
+ return n == 0 ? 0 : s / n;
159
150
}
160
151
```
161
152
@@ -164,19 +155,18 @@ function averageValue(nums: number[]): number {
164
155
```rust
165
156
impl Solution {
166
157
pub fn average_value(nums: Vec<i32>) -> i32 {
167
- let mut sum = 0 ;
158
+ let mut s = 0;
168
159
let mut n = 0;
169
- for num in nums . iter () {
170
- if num % 6 == 0 {
171
- sum += num ;
160
+ for x in nums.iter() {
161
+ if x % 6 == 0 {
162
+ s += x ;
172
163
n += 1;
173
164
}
174
165
}
175
-
176
166
if n == 0 {
177
167
return 0;
178
168
}
179
- sum / n
169
+ s / n
180
170
}
181
171
}
182
172
```
0 commit comments