给定一个数字k和一组排序数字。查找是否有任何数字在集合中可以被这个数字整除。
例如,如果k = 8,集合是{3, 4, 5},那么4将会整除8,4就是答案。
最坏情况的解决方案是O(n)。
我们能做得更好吗?
给定一个数字k和一组排序数字。查找是否有任何数字在集合中可以被这个数字整除。
例如,如果k = 8,集合是{3, 4, 5},那么4将会整除8,4就是答案。
最坏情况的解决方案是O(n)。
我们能做得更好吗?
如果您想要更快地找出一个大数据集中的因数,可以将该数字进行分解(例如8分解为4、2、1),然后在给定的集合中查找这些因数。您可以使用集合交集或双分搜索您的因数列表。我认为这样做可以更快地得出答案。
计算k和集合成员的乘积的最大公约数。例如,gcd(3*4*5,8) = 4。
O(sqrt(k)*log(n))
小于O(n)
的情况下进行操作。生成k
的所有因子,然后在集合中查找每个因子。 - Steve Jessop