-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path1200-minimum-absolute-difference.js
More file actions
31 lines (25 loc) · 1.05 KB
/
1200-minimum-absolute-difference.js
File metadata and controls
31 lines (25 loc) · 1.05 KB
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
28
29
30
31
/**
* Minimum Absolute Difference
* Time Complexity: O(N log N)
* Space Complexity: O(N)
*/
var minimumAbsDifference = function (arr) {
const sortedValues = arr.slice().sort((valueOne, valueTwo) => valueOne - valueTwo);
let smallestDifference = Infinity;
for (let indexPosition = 1; indexPosition < sortedValues.length; indexPosition++) {
let currentNumber = sortedValues[indexPosition];
let previousNumber = sortedValues[indexPosition - 1];
let diffValue = currentNumber - previousNumber;
smallestDifference = Math.min(smallestDifference, diffValue);
}
const resultCollection = [];
for (let currentIterator = 1; currentIterator < sortedValues.length; currentIterator++) {
let rightValue = sortedValues[currentIterator];
let leftValue = sortedValues[currentIterator - 1];
let computedDifference = rightValue - leftValue;
if (computedDifference === smallestDifference) {
resultCollection.push([leftValue, rightValue]);
}
}
return resultCollection;
};