我想了解用于找到最大绝对差的优化代码与最大差的计算方式之间的关系。
这是挑战。
为您提供了N个整数数组A1,A2,…,AN。最大回报 所有1≤i,j≤N的f(i,j)的值。f(i,j)定义为| A [i]- A [j] | + | i-j |,其中| x |表示x的绝对值。
这是我的方法:
# *you click a link here....*
${check_popup}= Run Keyword and Return Status Wait Until Page Contains Element locator 6s
Run Keyword If ${check_popup} == 'True' Click Element locator
部分正确,因为时间复杂度不符合要求,因此我在Github上找到了该解决方案:
def maxArr(self, A):
if len(A) == 0:
return 0
curr_diff = 0
max_diff = 0
for i in range(len(A)):
j = i
while j < len(A):
curr_diff = abs(A[i] - A[j]) + abs(i - j)
max_diff = max(max_diff, curr_diff)
j += 1
return max_diff
通过了,我决定逐步阅读每个代码以进行理解。我不确定是否有正确的逐步输出,但是我反复检查了一下,仍然获得了这些值:
def maxArr(self, A):
max1 = -1000000000
min1 = +1000000000
max2 = -1000000000
min2 = +1000000000
for i in range(len(A)):
max1 = max(max1, A[i] + i)
min1 = min(min1, A[i] + i)
max2 = max(max2, A[i] - i)
min2 = min(min2, A[i] - i)
return max(max1 - min1, max2 - min2)
我又经历了一次,得到了相同的号码。当我逐步执行代码时,得到5,即返回值和[1,3 -1]的输出。但是我只想了解更好的解决方案是如何工作的。
感谢您的帮助。预先感谢。