LeetCode 2455: Average Value of Even Numbers That Are Divisible by Three (Filter + Aggregate)
LeetCode 2455ArrayMathToday we solve LeetCode 2455 - Average Value of Even Numbers That Are Divisible by Three.
Source: https://leetcode.com/problems/average-value-of-even-numbers-that-are-divisible-by-three/
English
Problem Summary
Given an integer array nums, return the average value of all numbers that are both even and divisible by 3. If there is no such number, return 0.
Key Insight
A number is valid iff num % 6 == 0. So we can do one pass, maintain sum and count, and return sum / count using integer division.
Algorithm
- Initialize sum = 0, count = 0.
- Traverse each num in nums.
- If num % 6 == 0, add it to sum and increment count.
- Return 0 when count == 0, otherwise sum / count.
Complexity Analysis
Time: O(n).
Space: O(1).
Reference Implementations (Java / Go / C++ / Python / JavaScript)
class Solution {
public int averageValue(int[] nums) {
int sum = 0;
int count = 0;
for (int num : nums) {
if (num % 6 == 0) {
sum += num;
count++;
}
}
return count == 0 ? 0 : sum / count;
}
}func averageValue(nums []int) int {
sum, count := 0, 0
for _, num := range nums {
if num%6 == 0 {
sum += num
count++
}
}
if count == 0 {
return 0
}
return sum / count
}class Solution {
public:
int averageValue(vector<int>& nums) {
int sum = 0, count = 0;
for (int num : nums) {
if (num % 6 == 0) {
sum += num;
count++;
}
}
return count == 0 ? 0 : sum / count;
}
};class Solution:
def averageValue(self, nums: List[int]) -> int:
total = 0
count = 0
for num in nums:
if num % 6 == 0:
total += num
count += 1
return 0 if count == 0 else total // countvar averageValue = function(nums) {
let sum = 0;
let count = 0;
for (const num of nums) {
if (num % 6 === 0) {
sum += num;
count++;
}
}
return count === 0 ? 0 : Math.floor(sum / count);
};中文
题目概述
给定整数数组 nums,求既是偶数又能被 3 整除的元素平均值。如果不存在这样的元素,返回 0。
核心思路
满足“偶数且能被 3 整除”就是能被 6 整除,即 num % 6 == 0。一趟遍历累计和与个数,最后做整数除法即可。
算法步骤
- 初始化 sum = 0、count = 0。
- 遍历数组每个元素 num。
- 若 num % 6 == 0,则累加到 sum 并令 count++。
- 若 count == 0 返回 0,否则返回 sum / count。
复杂度分析
时间复杂度:O(n)。
空间复杂度:O(1)。
多语言参考实现(Java / Go / C++ / Python / JavaScript)
class Solution {
public int averageValue(int[] nums) {
int sum = 0;
int count = 0;
for (int num : nums) {
if (num % 6 == 0) {
sum += num;
count++;
}
}
return count == 0 ? 0 : sum / count;
}
}func averageValue(nums []int) int {
sum, count := 0, 0
for _, num := range nums {
if num%6 == 0 {
sum += num
count++
}
}
if count == 0 {
return 0
}
return sum / count
}class Solution {
public:
int averageValue(vector<int>& nums) {
int sum = 0, count = 0;
for (int num : nums) {
if (num % 6 == 0) {
sum += num;
count++;
}
}
return count == 0 ? 0 : sum / count;
}
};class Solution:
def averageValue(self, nums: List[int]) -> int:
total = 0
count = 0
for num in nums:
if num % 6 == 0:
total += num
count += 1
return 0 if count == 0 else total // countvar averageValue = function(nums) {
let sum = 0;
let count = 0;
for (const num of nums) {
if (num % 6 === 0) {
sum += num;
count++;
}
}
return count === 0 ? 0 : Math.floor(sum / count);
};
Comments