1775. Equal Sum Arrays With Minimum Number of Operations (Medium) - TengnanYao/daily_leetcode GitHub Wiki
class Solution(object):
def minOperations(self, nums1, nums2):
"""
:type nums1: List[int]
:type nums2: List[int]
:rtype: int
"""
# O(n) greedy
c1, c2 = collections.Counter(nums1), collections.Counter(nums2)
s1, s2 = sum([k * v for k, v in c1.items()]), sum([k * v for k, v in c2.items()])
if s1 < s2:
s1, s2, c1, c2 = s2, s1, c2, c1
diff = s1 - s2
result = 0
for i in range(1, 6):
j = 7 - i
s = (c1[j] + c2[i]) * (j - 1)
if s >= diff:
return result + (diff - 1) // (j - 1) + 1
diff -= s
result += (c1[j] + c2[i])
return -1