【发布时间】:2015-07-29 15:27:52
【问题描述】:
我最近在一次采访中被问到这个问题,只能给出一个二次解:
给定一个包含 n 个数字的数组。给出一个算法(sumPairs)来找到 所有数对之和的累积和。算法 应该是 O(n) 时间。
例如:sumPairs([1,2,3,4]):
所有对为:(1+2) + (1+3) + (1+4) + (2+3) + (2+4) + (3+4)
所有求和对的总和:(1+2) + (1+3) + (1+4) + (2+3) + (2+4) + (3+4) = 30
我的方法是生成所有 2 元组 NC2(N 选择 2),并保持它们总和的运行总计。但是,我不确定如何在线性时间内完成它。据我所知,大小为 n 的列表存在 n*(n-1)/2 个元素。这怎么可能在线性时间内实现?
【问题讨论】:
-
在面试中,准备一个非常简单的热身问题:如果你的答案不是,再想一想(问题可能是难的 …)。让我们希望这就是它。
标签: arrays algorithm big-o time-complexity