我想在一个列表中找到所有的和为n的数字对。
如果我构建一棵树,其属性是每个节点的子节点都是大于其自身的所有值,那么我将能够遍历该树以找到所有求和为n的组合
例如:for list [1,2,3,4]
1
2 3 4
3 4 4
4 这是一种什么样的数据结构?
它是不是一个最小堆,对每个节点的子节点数和允许的重复数没有限制?
发布于 2017-07-05 22:57:01
你的目标号码是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 recordListhttps://stackoverflow.com/questions/44929231
复制相似问题