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

有序数组Floor值求解代码遇超时及运行错误,求无STL优化方案

有序数组Floor值的优化实现

原代码存在的问题

  • 数组采用传值方式vector<long long> v,会复制整个数组,大数据量下会因内存开销过大导致超时
  • 返回值类型为int,但数组元素是long long,当元素值超出int范围时会发生溢出,引发运行错误
  • 找到与目标值相等的元素后未终止循环,仍继续遍历,做无用功浪费时间

优化后的实现代码

long long findFloor(const vector<long long>& v, long long n, long long x)
{
    long long start = 0, end = n - 1;
    long long res = -1;

    while (start <= end)
    {
        long long mid = start + (end - start) / 2;

        if (v[mid] == x)
        {
            // 找到目标值直接返回,这就是符合要求的最大元素
            return v[mid];
        }
        else if (v[mid] < x)
        {
            // 当前元素符合条件,记录后向右寻找更大的候选值
            res = v[mid];
            start = mid + 1;
        }
        else
        {
            // 当前元素过大,向左缩小搜索范围
            end = mid - 1;
        }
    }

    return res;
}

优化说明

  • 传引用替代传值:将数组参数改为const vector<long long>& v,避免复制整个数组,大幅降低内存占用和时间消耗,解决超时问题
  • 类型匹配:返回值类型改为long long,与数组元素类型保持一致,避免数值溢出导致的运行错误
  • 提前终止循环:找到与目标值相等的元素时直接返回,无需继续遍历,减少不必要的计算

内容的提问来源于stack exchange,提问作者Prathu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 03:45:38