给你一个由正整数组成的整数数组 nums
,返回其中可被 3
整除的所有偶数的平均值。
注意:n
个元素的平均值等于 n
个元素 求和 再除以 n
,结果 向下取整 到最接近的整数。
示例 1:
输入:nums = [1,3,6,10,12,15]
输出:9
解释:6 和 12 是可以被 3 整除的偶数。(6 + 12) / 2 = 9 。
示例 2:
输入:nums = [1,2,4,7,10]
输出:0
解释:不存在满足题目要求的整数,所以返回 0 。
提示:
1 <= nums.length <= 1000
1 <= nums[i] <= 1000
解法 遍历
能被 3 3 3 和 2 2 2 整除的数,就是能被最小公倍数 LCM ( 2 , 3 ) = 6 \text{LCM}(2, 3)=6 LCM(2,3)=6 整除的数。遍历 nums \textit{nums} nums ,统计 6 6 6 的倍数的和 sum \textit{sum} sum ,以及 6 6 6 的倍数的个数 cnt \textit{cnt} cnt 。答案就是 ⌊ sum cnt ⌋ \left\lfloor\dfrac{\textit{sum}}{\textit{cnt}}\right\rfloor ⌊cntsum⌋ 。如果 c n t = 0 cnt=0 cnt=0 ,返回 0 0 0 。
class Solution {
public int averageValue(int[] nums) {
int sum = 0, cnt = 0;
for (int x : nums) {
if (x % 6 == 0) {
sum += x;
cnt++;
}
}
return cnt > 0 ? sum / cnt : 0;
}
}
复杂度分析:
- 时间复杂度: O ( n ) O(n) O(n) ,其中 n n n 为 n u m s nums nums 的长度
- 空间复杂度: O ( 1 ) O(1) O(1) ,仅用到若干额外变量。