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 integerx
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
.
cpp
class Solution {
public:
int minimumAddedInteger(vector<int>& nums1, vector<int>& nums2) {
sort(nums1.begin(), nums1.end());
sort(nums2.begin(), nums2.end());
for (int i = 2; i > 0; i--) {
int x = nums2[0] - nums1[i];
int j = 0;
for (int k = i; k < nums1.size(); k++) {
if (nums2[j] == nums1[k] + x && ++j == nums2.size()) {
return x;
}
}
}
return nums2[0] - nums1[0];
}
};