Description
You are given two arrays nums1
and nums2
consisting of positive integers.
You have to replace all the 0
's in both arrays with strictly positive integers such that the sum of elements of both arrays becomes equal.
Return the minimum equal sum you can obtain, or -1
if it is impossible.
Β
Example 1:
Input: nums1 = [3,2,0,1,0], nums2 = [6,5,0] Output: 12 Explanation: We can replace 0's in the following way: - Replace the two 0's in nums1 with the values 2 and 4. The resulting array is nums1 = [3,2,2,1,4]. - Replace the 0 in nums2 with the value 1. The resulting array is nums2 = [6,5,1]. Both arrays have an equal sum of 12. It can be shown that it is the minimum sum we can obtain.
Example 2:
Input: nums1 = [2,0,2,0], nums2 = [1,4] Output: -1 Explanation: It is impossible to make the sum of both arrays equal.
Β
Constraints:
1 <= nums1.length, nums2.length <= 105
0 <= nums1[i], nums2[i] <= 106
Solution
Python3
class Solution:
def minSum(self, nums1: List[int], nums2: List[int]) -> int:
N, M = len(nums1), len(nums2)
zero1 = zero2 = sum1 = sum2 = 0
for x in nums1:
if x == 0:
zero1 += 1
else:
sum1 += x
for x in nums2:
if x == 0:
zero2 += 1
else:
sum2 += x
if zero1 == 0 and zero2 == 0:
return -1 if sum1 != sum2 else sum1
if zero1 == 0:
if zero2 + sum2 > sum1: return -1
return sum1
if zero2 == 0:
if zero1 + sum1 > sum2: return -1
return sum2
return max(sum1 + zero1, sum2 + zero2)