You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从数组中查找比给定整数更大的最接近数值

实现方案

通用方案(适用于任意数组)

核心逻辑:比目标值大的所有元素里的最小值,就是最接近目标值的更大元素

  • 第一步:过滤数组,只保留大于目标整数的元素
  • 第二步:若过滤后的数组为空,返回无匹配标识(可自定义为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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 08:30:04