假设您有一个任意整数列表,True
如果列表中存在总和为 0 的对,则返回。
我能够产生 n*log(n) 复杂度的解决方案。这是一个简短的草图(虽然有一个更简单的方法,见下文):
- 对数组进行排序。设置指向第一个元素的指针。
- 调查指针的元素(首先调用它)和数组对面的元素(最后调用它)。如果第一个元素的大小大于最后一个元素,则删除第一个元素并将指针移动到最后一个元素。否则开始向后遍历数组以寻找(可能的)总和。
- 如果没有找到总和,将指针移动到下一个元素并重复 2。
上面的解释并不重要。显然还有另一种使用字典的解决方案。有人可以启发我吗?