给定一个整数数组A,返回两个元素间可能的最大和距离。其中,和距离定义为
例如,对于
O(n2)的解法很显然。是否有O(n)的解法(其中n是数组的长度)?
A[i] + A[j] + (i - j)
(其中i > j)。例如,对于
A = [8, 2, 4, 9, 5, 8, 0, 3, 8, 2]
,最大和距离为24,当i=0,j=8时实现。O(n2)的解法很显然。是否有O(n)的解法(其中n是数组的长度)?
max(A[i] + i for i in range(len(A)) + max(A[j] - j for j in range(len(A)))
。然后我会看你是否添加了绝对值或限制条件i < j
,接着我会去查找重复项。 - David EisenstatA[i] + A[j] - |i - j|
。我记得回答过那个问题。 - David Eisenstati > j
可以产生差异,因为它禁止了i == j
,因此我们无法独立优化 f(i) 和 h(j)。 - piotrek