problem

You are given an integer array nums. In one operation, you can add or subtract 1 from any element of nums.

Return the minimum number of operations to make all elements of nums divisible by 3.

 

Example 1:

Input: nums = [1,2,3,4]

Output: 3

Explanation:

All array elements can be made divisible by 3 using 3 operations:

  • Subtract 1 from 1.
  • Add 1 to 2.
  • Subtract 1 from 4.

Example 2:

Input: nums = [3,6,9]

Output: 0

 

Constraints:

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

submission

impl Solution {
    pub fn minimum_operations(nums: Vec<i32>) -> i32 {
        // we could also map(|n| (n % 3 != 0) as i32)
        // we could also filter and count
        // since every number need at most 1 operation
        nums.into_iter()
            .map(|n| (n % 3).min(3 - n % 3))
            .sum()
    }
}