LeetCode-in-Java

3132. Find the Integer Added to Array II

Medium

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:

Solution

import java.util.Arrays;

public class Solution {
    public int minimumAddedInteger(int[] nums1, int[] nums2) {
        Arrays.sort(nums1);
        Arrays.sort(nums2);
        if (checkOk(nums1, nums2, 2)) {
            return nums2[0] - nums1[2];
        } else if (checkOk(nums1, nums2, 1)) {
            return nums2[0] - nums1[1];
        } else {
            return nums2[0] - nums1[0];
        }
    }

    private boolean checkOk(int[] nums1, int[] nums2, int start) {
        int i = 0;
        int diff = nums2[i] - nums1[start];
        while (i < nums2.length) {
            if (start - i > 2) {
                return false;
            }
            if (nums2[i] == nums1[start] + diff) {
                i++;
            }
            start++;
        }
        return i == nums2.length;
    }
}