# 2541. Minimum Operations to Make Array Equal II

• Time: $O(n)$
• Space: $O(1)$
  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 class Solution { public: long long minOperations(vector& nums1, vector& nums2, int k) { if (k == 0) return nums1 == nums2 ? 0 : -1; long long ans = 0; long long opsDiff = 0; // # of increments - # of decrements for (int i = 0; i < nums1.size(); ++i) { const int diff = nums1[i] - nums2[i]; if (diff == 0) continue; if (diff % k != 0) return -1; const int ops = diff / k; opsDiff += ops; ans += abs(ops); } return opsDiff == 0 ? ans / 2 : -1; } }; 
  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 class Solution { public long minOperations(int[] nums1, int[] nums2, int k) { if (k == 0) return Arrays.equals(nums1, nums2) ? 0 : -1; long ans = 0; long opsDiff = 0; // # of increments - # of decrements for (int i = 0; i < nums1.length; ++i) { final int diff = nums1[i] - nums2[i]; if (diff == 0) continue; if (diff % k != 0) return -1; final int ops = diff / k; opsDiff += ops; ans += Math.abs(ops); } return opsDiff == 0 ? ans / 2 : -1; } } 
  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 class Solution: def minOperations(self, nums1: List[int], nums2: List[int], k: int) -> int: if k == 0: return 0 if nums1 == nums2 else -1 ans = 0 opsDiff = 0 # number of increments - number of decrements for num1, num2 in zip(nums1, nums2): diff = num1 - num2 if diff == 0: continue if diff % k != 0: return -1 ops = diff // k opsDiff += ops ans += abs(ops) return ans // 2 if opsDiff == 0 else -1