Minimum Absolute Sum Difference LeetCode solution in JavaScript

1
var minAbsoluteSumDiff = function (nums1, nums2) {
2
const MOD = 1e9 + 7;
3
const n = nums1.length;
4

5
const origDiffs = [];
6
let diffSum = 0;
7

8
for (let i = 0; i < n; i++) {
9
const num1 = nums1[i];
10
const num2 = nums2[i];
11

12
const currDiff = Math.abs(num1 - num2);
13

14
origDiffs[i] = currDiff;
15
diffSum += currDiff;
16
}
17

18
nums1.sort((a, b) => a - b);
19

20
let minDiffSum = diffSum;
21

22
for (let i = 0; i < n; i++) {
23
const origDiff = origDiffs[i];
24

25
const num2 = nums2[i];
26

27
let left = 0;
28
let right = n - 1;
29

30
let bestDiff = origDiff;
31

32
while (left <= right) {
33
const mid = (left + right) >> 1;
34
const num1 = nums1[mid];
35

36
const candDiff = num1 - num2;
37

38
if (Math.abs(candDiff) < bestDiff) {
39
bestDiff = Math.abs(candDiff);
40
if (bestDiff === 0) break;
41
}
42

43
if (candDiff < 0) left = mid + 1;
44
else right = mid - 1;
45
}
46

47
const replacedDiffSum = diffSum - origDiff + bestDiff;
48

49
minDiffSum = Math.min(minDiffSum, replacedDiffSum);
50
}
51

52
return minDiffSum % MOD;
53
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0