Description
给定两个数组
Constraints
时间复杂度不超过
Solution
这道题就是求三维的曼哈顿距离,每一个点
计算公式在未展开时为
展开后为
因此,把
每种情况的遍历过程可以算出
Code
class Solution {
public:
int maxAbsValExpr(vector<int>& arr1, vector<int>& arr2) {
constexpr int d[][3] = {
{1, 1, 1},
{-1, 1, 1},
{1, -1, 1},
{1, 1, -1},
{-1, -1, 1},
{-1, 1, -1},
{1, -1, -1},
{-1, -1, -1}
};
int ans {};
for(auto &d : d) {
int mx {-1<<30}, mn {-mx};
for(int i = 0; i < arr1.size(); ++i) {
auto v = d[0] * arr1[i] + d[1] * arr2[i] + d[2] * i;
// {ACE}
mx = max(mx, v);
// -{BDF}
mn = min(mn, v);
}
// {ACE} + {BDF}
ans = max(ans, mx - mn);
}
return ans;
}
};