Description
You are given two integer arrays nums1 and nums2.
From nums1 two elements have been removed, and all other elements have been increased (or decreased in the case of negative) by an integer, represented by the variable x.
As a result, nums1 becomes equal to nums2. Two arrays are considered equal when they contain the same integers with the same frequencies.
Return the minimum possible integer x that achieves this equivalence.
Β
Example 1:
Input: nums1 = [4,20,16,12,8], nums2 = [14,18,10]
Output: -2
Explanation:
After removing elements at indices [0,4] and adding -2, nums1 becomes [18,14,10].
Example 2:
Input: nums1 = [3,5,5,3], nums2 = [7,7]
Output: 2
Explanation:
After removing elements at indices [0,3] and adding 2, nums1 becomes [7,7].
Β
Constraints:
3 <= nums1.length <= 200nums2.length == nums1.length - 20 <= nums1[i], nums2[i] <= 1000- The test cases are generated in a way that there is an integer
xsuch thatnums1can become equal tonums2by removing two elements and addingxto each element ofnums1.
Solution
Python3
class Solution:
def minimumAddedInteger(self, nums1: List[int], nums2: List[int]) -> int:
N = len(nums1)
M = N - 2
nums2.sort()
nums1.sort()
res = inf
def check(d):
skip = j = 0
for i in range(N):
if nums2[j] - nums1[i] == d:
j += 1
else:
skip += 1
if skip > 2 or j == M:
break
return skip <= 2
for i in range(N):
d = nums2[0] - nums1[i]
if check(d):
res = min(res, d)
return res