假设您有一个任意的整数列表,如果列表中存在一对总和为0的对,则返回True
。
我能够生成n * log(n)复杂度的解决方案。这是一个简短的草图(虽然有一种更简单的方法,见下文):
上述解释并不重要。 显然还有另一个使用词典的解决方案。有人可以启发我吗?
答案 0 :(得分:3)
如果元素是-x和x,则可以得到0的和。遍历所有元素并将值存储在字典中。如果你有一个x检查是否设置了-x。
顺便说一下,你的解决方案是n * log(n)+ n而不是n * log(n)</nitpick>
:)
答案 1 :(得分:1)
您将key=n
和value=0-n
添加到字典中。如果字典已包含0-n
作为键 - &gt;找到了这对。
答案 2 :(得分:1)
通过使用散列图数据结构,您可以轻松实现O(n)时间/空间复杂度。
O(n)+ O(n)= O(n)