我想在列表中找到总和为n
的所有数字对。
如果我构建一个具有属性的树,每个节点的子节点都是大于它自身的值,那么我将能够遍历它以找到总和为n
的所有组合:
例如。列表[1,2,3,4]
:
1
2 3 4
3 4 4
4
这是什么类型的数据结构?
它是一个小堆,对每个节点的子节点数没有限制,允许重复吗?
答案 0 :(得分:1)
您的目标号码是N
。您可以保留一个包含您目前遇到的数字的哈希表,当您遇到新号码X
时,您可以测试您是否在哈希表中遇到N-X
。
伪代码:
var encountered <- hashTable(key: integer, value: any)
var recordList <- list(value: pairs of integers)
for each element in inputList
if encountered(N-element) then push [element, N-element] into recordList
push element into encountered
loop
return recordList