在整数数组中查找最接近的数字

FD75

给定一个有序整数数组,我想找到最接近给定数字的值。数组可能包含重复值和负数。示例:输入:arr [] = {-5、2、5、6、7、8、8、9};目标数量= 4输出:5

哪个是最快的算法?二进制搜索?STL找到算法了吗?

谢谢你的帮助。

戴维·斯帕塔罗(Davide Spataro)

std库中有一种算法几乎可以完全满足您的要求:std::lower_bound

返回一个迭代器,该迭代器指向不小于(即大于或等于)值的[first,last)范围内的第一个元素;如果找不到此类元素,则返回last。

您可以使用它来查找等于或高于目标的第一个元素。答案是前面的那个数字。


检查以下示例:

int find_closest(const vector<int>& A, const int a)
{
    if(A.size() <=0)
        throw std::invalid_argument("empty array");

    const auto lb = std::lower_bound(A.begin(), A.end(), a);
    int ans = lb!= A.end() ? *lb : A.back();
    if (lb != A.begin()) {
        auto prec = lb - 1;
        if (abs(ans - a) > abs(*prec - a))
            ans = *prec;
    }

    return ans;
}

lower_bound执行二进制搜索时,此方法的复杂性在输入集合的大小上是对数的这比幼稚的解决方案要快得多,在幼稚的解决方案中,您将遍历整个集合并逐个检查每个元素。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从两个数组列表中查找最接近的数字

来自分类Dev

在两个数组中查找最接近的数字

来自分类Dev

在两个数组中查找最接近的数字

来自分类Dev

从两个数组列表中查找最接近的数字

来自分类Dev

在圆形数组中查找最接近的数字

来自分类Dev

在字典中查找数字的最接近的下键

来自分类Dev

从点数组中查找最接近的点

来自分类Dev

从点数组中查找最接近的点

来自分类Dev

从四舍五入的数组中查找最接近的整数

来自分类Dev

如何在数组中查找最接近给定数字的值

来自分类Dev

查找数组中最接近的较高和较低的数字

来自分类Dev

查找最接近0的数字

来自分类Dev

从给定的整数数组中找到最接近的整数值,四舍五入

来自分类Dev

在Haskell树中查找最接近整数参数的键

来自分类Dev

在MongoDB中查找最接近的整数以进行坐标

来自分类Dev

在一组整数中查找最接近的元素

来自分类Dev

在整数数组中查找循环的长度

来自分类Dev

在数组中查找最接近的值使用linq?

来自分类Dev

如何在数组中查找最接近条件的数据

来自分类Dev

从跟随趋势的数组中查找最接近的元素

来自分类Dev

PHP-优化查找数组中的最接近点

来自分类Dev

查找与数字中最接近的因子

来自分类Dev

查找最接近列表目标和的数字

来自分类Dev

从数组获取数字的最接近值

来自分类Dev

获取数组中最接近的数字

来自分类Dev

如何在数组中找到与整数和数字之间的两个最接近的差

来自分类Dev

在数字列表中查找数字对最接近的匹配项的算法

来自分类Dev

用右侧最接近的大整数替换数组中的整数的算法

来自分类Dev

Python:查找与特定整数最接近的整数值

Related 相关文章

热门标签

归档