java索引和数组值的最大绝对差
我遇到了一个问题,它是: 给你一个由N个整数组成的数组,A1,A2,…,an。返回所有1的f(i,j)的最大值≤ i、 j≤ N f(i,j)定义为| A[i]-A[j]+|i-j |,其中| x |表示x的绝对值。 比如说,
A=[1, 3, -1]
f(1, 1) = f(2, 2) = f(3, 3) = 0
f(1, 2) = f(2, 1) = |1 - 3| + |1 - 2| = 3
f(1, 3) = f(3, 1) = |1 - (-1)| + |1 - 3| = 4
f(2, 3) = f(3, 2) = |3 - (-1)| + |2 - 3| = 5
So, we return 5. I have searched for the efficient solution to this problem and that is:
def maxDistance(array):
# max and min variables as described
# in algorithm.
max1 = -2147483648
min1 = +2147483647
max2 = -2147483648
min2 = +2147483647
for i in range(len(array)):
# Updating max and min variables
# as described in algorithm.
max1 = max(max1, array[i] + i)
max2 = max(max2, array[i] - i)
min1 = min(min1, array[i] + i)
min2 = min(min2, array[i] - i)
return max(max1 - min1, max2 - min2)
现在我的问题是为什么我们要为数组中的每个值做[i]-i。我试过很多次去理解它,但我仍然不明白为什么我们要用每个值及其索引值来做负数。我需要一个简单的术语来理解它。请帮我简单地理解这个问题。我将非常感谢你
# 1 楼答案
我想这对你来说很清楚