我目前正在使用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的解决方案来实现。
我认为较低的时间复杂性意味着更快的运行时间。现在我很困惑。运行时间和时间复杂性之间的关系是什么。在面试中会有什么样的解决方案?
答案 0 :(得分:1)
我认为较低的时间复杂性意味着更快的运行时间。
并非总是如此。这取决于问题的大小n
。时间复杂度描述了n
渐近渐近无穷大时的性能。
在您的情况下,n
太小,不足以使时间复杂性影响运行时。有关详细说明,请参阅Difference between Time Complexity and Running time。
我对这种行为的解释是你使用了一个带有开销的hashmap,而另一个解决方案却没有。结合n
足够小的事实,它们的性能可以比较。
顺便问一下,你需要致电containsKey()
吗?我想不是,只需检查put()
返回的内容,如hashmap containsKey complexity中所述。