【发布时间】:2011-08-23 06:25:21
【问题描述】:
我知道这可以通过对数组进行排序并取较大的数字直到满足所需条件来完成。这至少需要 nlog(n) 排序时间。
对nlog(n) 有什么改进吗?
我们可以假设所有数字都是正数。
【问题讨论】:
-
@equality:是的,我更正了我的帖子。
-
O(n log(n)) 算法是否不足以让他们相信你是一个好的候选人?对我来说,这听起来是一个不错的解决方案。
-
@equality: S 不必是恒定的,它只需要知道即可。如果它是恒定的或有界的,您可以通过提前分配存储桶来提高现实世界的性能,但这对算法的理论复杂性没有影响。
-
@equality:当我说“已知”时,我的意思是“在任何计算之前就知道”。比较排序有严格的
n lg(n)限制的原因是您事先不知道值在什么范围内,有多少等。预先了解其中一些信息是允许非比较的原因排序在某些情况下表现更好。 -
我认为我的解决方案应该被接受。它为您提供最佳答案,无需任何基于快速整数的排序或对输入做出任何假设。
标签: arrays algorithm subset-sum