#1818

Minimum Absolute Sum Difference

Medium
ArrayBinary SearchSortingOrdered SetBinary SearchSorting
LeetCode ↗

Approaches

Brute ForceOptimal
Complexity Comparison
Brute ForceOptimal Solution
Time
O(n²)
O(n log n)
Space
O(1)
O(n)
💡

Intuition

Time O(n log n)Space O(n)

The optimal approach leverages sorting and binary search to efficiently find the best replacement for each element in nums1. This reduces the time complexity significantly while ensuring we still minimize the absolute sum difference.

⚙️

Algorithm

4 steps
  1. 1Step 1: Calculate the initial absolute sum difference between nums1 and nums2.
  2. 2Step 2: Sort nums1 to enable binary search.
  3. 3Step 3: For each element in nums2, use binary search to find the closest value in nums1 that minimizes the absolute difference.
  4. 4Step 4: Calculate the new absolute sum difference for each replacement and keep track of the minimum.
solution.py16 lines
1def minAbsoluteSumDiff(nums1, nums2):
2    import bisect
3    mod = 10**9 + 7
4    n = len(nums1)
5    initial_sum = sum(abs(nums1[i] - nums2[i]) for i in range(n))
6    nums1_sorted = sorted(nums1)
7    min_sum = initial_sum
8    for num in nums2:
9        idx = bisect.bisect_left(nums1_sorted, num)
10        if idx < len(nums1_sorted):
11            new_sum = initial_sum - abs(num - nums1[idx]) + abs(num - nums1_sorted[idx])
12            min_sum = min(min_sum, new_sum)
13        if idx > 0:
14            new_sum = initial_sum - abs(num - nums1[idx-1]) + abs(num - nums1_sorted[idx-1])
15            min_sum = min(min_sum, new_sum)
16    return min_sum % mod

Complexity note: The time complexity is O(n log n) due to sorting nums1, and O(n) for iterating through nums2 and performing binary searches. The space complexity is O(n) for storing the sorted version of nums1.

  • 1Replacing an element in nums1 can significantly reduce the absolute sum difference.
  • 2Sorting nums1 allows for efficient searching of the closest elements to minimize differences.

Solutions and explanations are original Tejav content. Problem titles © LeetCode — use the LeetCode button above for the full problem statement.