UNPKG

@bazilio-san/af-stream

Version:
63 lines 2.19 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.findIndexOfNearestSmallerInNumArray = exports.findIndexOfNearestSmallerInNumArrayBINARY = exports.findIndexOfNearestSmallerInNumArrayRIGHT = exports.findIndexOfNearestSmallerInNumArrayLEFT = void 0; const findIndexOfNearestSmallerInNumArrayLEFT = (arr, x) => { if (!arr.length) { return -1; } const index = arr.findIndex((v) => v >= x); if (index > -1) { return index - 1; } if (x < arr[0]) { return -1; } return arr.length - 1; }; exports.findIndexOfNearestSmallerInNumArrayLEFT = findIndexOfNearestSmallerInNumArrayLEFT; const findIndexOfNearestSmallerInNumArrayRIGHT = (arr, x) => { let pos = arr.length; if (pos) { while (--pos >= 0) { if (arr[pos] < x) { return pos; } } } return -1; }; exports.findIndexOfNearestSmallerInNumArrayRIGHT = findIndexOfNearestSmallerInNumArrayRIGHT; const findIndexOfNearestSmallerInNumArrayBINARY = (arr, x) => { let start = 0; let end = arr.length - 1; let ans = -1; while (start <= end) { const mid = Math.floor((start + end) / 2); if (arr[mid] === x) { return mid - 1; } if (arr[mid] > x) { end = mid - 1; } else { ans = mid; start = mid + 1; } } return ans; }; exports.findIndexOfNearestSmallerInNumArrayBINARY = findIndexOfNearestSmallerInNumArrayBINARY; const findIndexOfNearestSmallerInNumArray = (arr, x) => { const { length } = arr; if (!length) { return -1; } if (length > 2000) { return (0, exports.findIndexOfNearestSmallerInNumArrayBINARY)(arr, x); } return ((arr[length - 1] - arr[0]) / 2) < x ? (0, exports.findIndexOfNearestSmallerInNumArrayRIGHT)(arr, x) : (0, exports.findIndexOfNearestSmallerInNumArrayLEFT)(arr, x); }; exports.findIndexOfNearestSmallerInNumArray = findIndexOfNearestSmallerInNumArray; //# sourceMappingURL=find-index-of-nearest-smaller-in-num-array.js.map