algorithm - 如何为 O(1) 中的一系列数字创建一个返回相同值的函数?

标签 algorithm

例如

H: [0, 20] -> "a"
H: [21: 25] -> "y"
H: [26: 132] -> "z"

无论我输入了多少个范围,我怎样才能使 H 函数花费恒定时间(以及插入的恒定时间)?这可能吗?

最佳答案

是的,只需使用查找表。使用您希望由范围表示的值为每个范围初始化表,然后返回索引处的值。像这样:

const char *lookup(int index)
{
    static const char *table[] = {
        "foo",
        "foo",
        "foo",
        "foo",
        "bar",
        "bar",
        "quirk",
        "quirk",
        "quirk"
    };
    return table[index];
}

对于 [0, 3] 范围返回 "foo",对于 [4, 5]"quirk" 范围 [6, 8]

关于algorithm - 如何为 O(1) 中的一系列数字创建一个返回相同值的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15722205/

相关文章:

algorithm - Bellman-Ford 的结果是 "all pairs"还是 "from one node"最短路径?/是否有全对 Bellman-Ford 版本?

algorithm - Miller Rabin素性测试有两种类型?

java - 解码字符串有多少种方法?

python - 从范围集合返回最小范围数的最佳方法

algorithm - 寻找多维优化算法

c++ - spoj : ONP - Transform the Expression

algorithm - 有什么方法可以优化乘法循环吗?

algorithm - 函数 f(n) 不是 O(g(n)) 并且 g(n) 不是 O(f(n))

algorithm - 在 N 维矩阵中找到大于 x 的值,其中 x 是索引之和

algorithm - "vibrance"过滤器的算法是什么?