1131. 绝对值表达式的最大值

给你两个长度相等的整数数组,返回下面表达式的最大值:

|arr1[i] - arr1[j]| + |arr2[i] - arr2[j]| + |i - j|

其中下标 i,j 满足 0 <= i, j < arr1.length。

 

示例 1:

输入:arr1 = [1,2,3,4], arr2 = [-1,4,5,6]
输出:13
示例 2:

输入:arr1 = [1,-2,-5,0,10], arr2 = [0,-2,-1,-7,-4]
输出:20
 

提示:

2 <= arr1.length == arr2.length <= 40000
-10^6 <= arr1[i], arr2[i] <= 10^6

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/maximum-of-absolute-value-expression

其实就是三维曼哈顿距离求最大

class Solution:
    def maxAbsValExpr(self, arr1: List[int], arr2: List[int]) -> int:
        fuhao=[1,-1]
        n=len(arr1)
        dists=[]
        for a in fuhao:
            for b in fuhao:
                for c in fuhao:
                    maxDist=float('-inf')
                    minDist=float('inf')
                    for i in range(n):
                        dist=arr1[i]*a+arr2[i]*b+i*c
                        maxDist=max(maxDist,dist)
                        minDist=min(minDist,dist)
                    dists.append(maxDist-minDist)
        return max(dists)

 

posted @ 2020-07-24 16:26  XXXSANS  阅读(247)  评论(0编辑  收藏  举报