Welcome to Subscribe On Youtube

2455. Average Value of Even Numbers That Are Divisible by Three

Description

Given an integer array nums of positive integers, return the average value of all even integers that are divisible by 3.

Note that the average of n elements is the sum of the n elements divided by n and rounded down to the nearest integer.

 

Example 1:

Input: nums = [1,3,6,10,12,15]
Output: 9
Explanation: 6 and 12 are even numbers that are divisible by 3. (6 + 12) / 2 = 9.

Example 2:

Input: nums = [1,2,4,7,10]
Output: 0
Explanation: There is no single number that satisfies the requirement, so return 0.

 

Constraints:

  • 1 <= nums.length <= 1000
  • 1 <= nums[i] <= 1000

Solutions

Solution 1: Simulation

We notice that an even number divisible by $3$ must be a multiple of $6$. Therefore, we only need to traverse the array, count the sum and the number of all multiples of $6$, and then calculate the average.

The time complexity is $O(n)$, where $n$ is the length of the array. The space complexity is $O(1)$.

  • class Solution {
        public int averageValue(int[] nums) {
            int s = 0, n = 0;
            for (int x : nums) {
                if (x % 6 == 0) {
                    s += x;
                    ++n;
                }
            }
            return n == 0 ? 0 : s / n;
        }
    }
    
  • class Solution {
    public:
        int averageValue(vector<int>& nums) {
            int s = 0, n = 0;
            for (int x : nums) {
                if (x % 6 == 0) {
                    s += x;
                    ++n;
                }
            }
            return n == 0 ? 0 : s / n;
        }
    };
    
  • class Solution:
        def averageValue(self, nums: List[int]) -> int:
            s = n = 0
            for x in nums:
                if x % 6 == 0:
                    s += x
                    n += 1
            return 0 if n == 0 else s // n
    
    
  • func averageValue(nums []int) int {
    	var s, n int
    	for _, x := range nums {
    		if x%6 == 0 {
    			s += x
    			n++
    		}
    	}
    	if n == 0 {
    		return 0
    	}
    	return s / n
    }
    
  • function averageValue(nums: number[]): number {
        let s = 0;
        let n = 0;
        for (const x of nums) {
            if (x % 6 === 0) {
                s += x;
                ++n;
            }
        }
        return n === 0 ? 0 : ~~(s / n);
    }
    
    
  • impl Solution {
        pub fn average_value(nums: Vec<i32>) -> i32 {
            let mut s = 0;
            let mut n = 0;
            for x in nums.iter() {
                if x % 6 == 0 {
                    s += x;
                    n += 1;
                }
            }
            if n == 0 {
                return 0;
            }
            s / n
        }
    }
    
    

All Problems

All Solutions