我有一个列表,我试图找到列表条目的组合总和,除了要添加的两个值彼此相等的条目(即 2+2 不会相加)并将它们添加到另一个条目列表。 举个例子:
[1,2,3] would yield the list of sums [3,4,5] because 1+2=5,1+3=4, and 2+3=5
但是,我的问题是不知道会产生多少金额。我在 java 中工作,并且仅限于 native 数组,因此必须先设置数组的大小,然后才能将总和值添加到其中。
我知道我无法找到总和列表的确切大小,因为如果两个元素相同,则总和可能不会被添加,但我正在尝试对其进行粗略估计,所以我不会有大量的数组。
我得到的最接近的“公式”是设置以下内容,但它从来都不是任何列表的最大值
(list length of original numbers * list length of original numbers) / 2
我试图记住时间复杂度,因此不断计算总和的数量,将数组设置为该大小,然后再次循环原始列表将效率不高。
有什么建议吗?
最佳答案
你能将相同的和添加到数组中吗?我的意思是,你的数组是{1,2,3,4,5}。你会打印 1+5 和 2+4 =6 的结果吗? 如果你的答案是肯定的。您可以获取数组的长度,然后将其乘以 1 再除以 2。例如;我们的数组 → {1,2,3,4,5} 长度为 5,结果数组的长度将为 5*4/2=10。
如果你无法定义数组的长度,你可以使用java中的列表。请记住。
关于java - 列表模式的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69080624/