如何从数组中查找比给定整数更大的最接近数值
实现方案
通用方案(适用于任意数组)
核心逻辑:比目标值大的所有元素里的最小值,就是最接近目标值的更大元素
- 第一步:过滤数组,只保留大于目标整数的元素
- 第二步:若过滤后的数组为空,返回无匹配标识(可自定义为
null/undefined等) - 第三步:取过滤后数组的最小值,即为所求结果
代码实现(JavaScript)
function findClosestBigger(target, arr) { const biggerItems = arr.filter(item => item > target); return biggerItems.length ? Math.min(...biggerItems) : null; } // 示例测试 const number = 2; const array = [1,4,5,6]; console.log(findClosestBigger(number, array)); // 输出 4
优化方案(适用于升序有序数组)
如果输入数组本身是升序排列的,可使用二分查找降低时间复杂度,适合大规模数组场景,时间复杂度从O(n)优化为O(logn)
- 用二分法遍历数组,找到第一个大于目标值的元素即可返回
代码实现(JavaScript)
function binaryFindClosestBigger(target, sortedArr) { let left = 0; let right = sortedArr.length - 1; let res = null; while (left <= right) { const mid = Math.floor((left + right) / 2); if (sortedArr[mid] > target) { res = sortedArr[mid]; right = mid - 1; // 向左查找更小的符合条件的元素 } else { left = mid + 1; // 向右查找更大的元素 } } return res; } // 示例测试 const sortedArray = [1,4,5,6]; console.log(binaryFindClosestBigger(2, sortedArray)); // 输出 4
内容的提问来源于stack exchange,提问作者lagro23
相关产品推荐
相关产品推荐

