我有一个算法(非常基础),为此我有两个解决方案,两个的复杂性是: 方法一:
Space complexity: O(n)
Time Complexity : O(n)
方法二:
Space complexity: O(1)
Time Complexity : O(nlogn)
选择哪种方法,我正在寻找这种情况下的最佳实践。
编辑 1:我的输入无限大。
最佳答案
算法评估绝对取决于问题。
例如,如果您的 n < 2^30
,您的方法 1 可能会很棒在这种情况下,您的算法将使用 2^30
的其余部分消耗空间中的位数。
您方法 2 将更具可扩展性,因为它不需要任何主要的额外内存。对于某人来说,等待结果的时间更长( nlogn
比 n^2
好)比让本应正常工作的系统崩溃更好。
因此,这完全取决于您的要求。
关于performance - 哪种方法更好 : space versus time complexity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29522094/