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 <= 200
nums2.length == nums1.length - 2
0 <= nums1[i], nums2[i] <= 1000
- The test cases are generated in a way that there is an integer
x
such thatnums1
can become equal tonums2
by removing two elements and addingx
to 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