时间复杂度和运行时间之间的关系是什么?

时间:2017-05-09 15:44:23

标签: java algorithm

我目前正在使用leetcode准备采访。 这是我遇到的问题,非常简单。 两个总和:

给定nums = [2,7,11,15],target = 9,

因为nums [0] + nums [1] = 2 + 7 = 9, 返回[0,1]。

这是我的解决方案,时间复杂度为O(n),空间复杂度为O(n)。 enter image description here

详细信息显示它的运行时非常慢,甚至可以通过O(n)^ 2的解决方案来实现。

enter image description here

我认为较低的时间复杂性意味着更快的运行时间。现在我很困惑。运行时间和时间复杂性之间的关系是什么。在面试中会有什么样的解决方案?

1 个答案:

答案 0 :(得分:1)

  

我认为较低的时间复杂性意味着更快的运行时间。

并非总是如此。这取决于问题的大小n。时间复杂度描述了n渐近渐近无穷大时的性能。

在您的情况下,n太小,不足以使时间复杂性影响运行时。有关详细说明,请参阅Difference between Time Complexity and Running time

我对这种行为的解释是你使用了一个带有开销的hashmap,而另一个解决方案却没有。结合n足够小的事实,它们的性能可以比较。

顺便问一下,你需要致电containsKey()吗?我想不是,只需检查put()返回的内容,如hashmap containsKey complexity中所述。