gpt4 book ai didi

algorithm - 确定排序数组中的任何数字是否为 `x` 的倍数的最快算法是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:19:18 25 4
gpt4 key购买 nike

给定一个正整数x和一个排序的正整数数组A

有没有比 O(N) 更快的算法来确定 A 中的任何元素是否是 x 的倍数? A 中没有负元素。

天真的循环 A once 是我目前唯一的想法,我不知道是否有任何方法可以利用 A 被排序的事实来加速它上。

最佳答案

这似乎很大程度上取决于 x 的大小以及 A 中的元素数量,特别是 x 的候选倍数在 A 内.

二进制搜索 A 中的特定数字需要 O(log(n)) 时间(n 是 A 中的元素数),所以如果有 k x 的可能倍数在 A 的第一个和最后一个元素之间, 需要 O(k * log(N))检查所有这些。如果该数字小于 n ,你可以使用这个算法,否则只做线性搜索。

(另外,上面的算法可能有一些小的优化。例如,一旦你检查了x*i(但没有找到它),你可以使用x*i应该作为下界的位置搜索 x*(i+1) 而不是数组的第一个元素。)

关于algorithm - 确定排序数组中的任何数字是否为 `x` 的倍数的最快算法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45232513/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com