3132. Find the Integer Added to Array II
Description
You are given two integer arrays nums1 and nums2.
We say that nums2 is reachable from nums1 with an integer x if there exist two elements in nums1 that, when removed, and x is added to all the remaining elements of nums1 (or subtracted in the case of a negative x), the resulting array 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 makes nums2 reachable from nums1.
It is guaranteed that nums2 is reachable from nums1 with at least one x.
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-
It is guaranteed that
nums2is reachable fromnums1with at least onex.
Solutions
Solution 1: Sorting + Enumeration + Two Pointers
Thinking
Two elements are dropped from \(nums1\), then every remaining value is shifted by \(x\) to match \(nums2\). Trying every deletion pair is \(O(n^2)\).
After sorting, \(x\) must be \(nums2[0]\) minus one of the first three values of \(nums1\), because at most two leading extras can be removed.
For each candidate, two pointers count mismatches; at most two are allowed. The smallest feasible \(x\) is the answer.
First, we sort the arrays \(nums1\) and \(nums2\). Since we need to remove two elements from \(nums1\), we only need to consider the first three elements of \(nums1\), denoted as \(a_1, a_2, a_3\). We can enumerate the first element \(b_1\) of \(nums2\), then we can get \(x = b_1 - a_i\), where \(i \in \{1, 2, 3\}\). Then we can use the two pointers method to determine whether there exists an integer \(x\) that makes \(nums1\) and \(nums2\) equal, and take the smallest \(x\) that satisfies the condition.
The time complexity is \(O(n \times \log n)\), and the space complexity is \(O(\log n)\). Where \(n\) is the length of the array.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | |