Back to all solutions

#1131 - Maximum of Absolute Value Expression

Problem Description

Given two arrays of integers with equal lengths, return the maximum value of:

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

where the maximum is taken over all 0 <= i, j < arr1.length.

Solution

/**
 * @param {number[]} arr1
 * @param {number[]} arr2
 * @return {number}
 */
var maxAbsValExpr = function(arr1, arr2) {
  const directions = [[1, 1], [1, -1], [-1, 1], [-1, -1]];
  let result = 0;

  for (const [dx, dy] of directions) {
    let minSeen = Infinity;
    let maxSeen = -Infinity;

    for (let i = 0; i < arr1.length; i++) {
      const value = dx * arr1[i] + dy * arr2[i] + i;
      minSeen = Math.min(minSeen, value);
      maxSeen = Math.max(maxSeen, value);
    }

    result = Math.max(result, maxSeen - minSeen);
  }

  return result;
};