#1818
Minimum Absolute Sum Difference
MediumArrayBinary SearchSortingOrdered SetBinary SearchSorting
Approaches
Brute ForceOptimal
Complexity Comparison
| Brute Force | Optimal 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- 1Step 1: Calculate the initial absolute sum difference between nums1 and nums2.
- 2Step 2: Sort nums1 to enable binary search.
- 3Step 3: For each element in nums2, use binary search to find the closest value in nums1 that minimizes the absolute difference.
- 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.