【发布时间】:2011-07-06 09:09:06
【问题描述】:
给定一个数字 k 和一组已排序的数字。查找集合中是否有任何数字可以整除这个数字。
例如,如果 k = 8,并且集合是 { 3, 4, 5},则 4 将除以 8。4 就是答案。
最坏情况的解决方案是 O(n)。
我们可以做得更好吗?
【问题讨论】:
-
您能描述一下您的最坏情况解决方案吗?到目前为止,你对自己有什么看法?另外,集合是否总是包含连续的数字?为什么 4 是答案? 2 也可以除以 8。
-
为什么 2 不是答案?
-
为什么 2 不是答案?您需要任何数字或最大的数字还是刚刚找到,没有找到就行?
-
为什么 1 不是答案?
-
对于小于
O(n)的情况,您当然可以使用O(sqrt(k)*log(n))。生成k的所有因子,在集合中查找每个因子。
标签: algorithm generic-programming factorization