Back to all solutions

#1499 - Max Value of Equation

Problem Description

You are given an array points containing the coordinates of points on a 2D plane, sorted by the x-values, where points[i] = [xi, yi] such that xi < xj for all 1 <= i < j <= points.length. You are also given an integer k.

Return the maximum value of the equation yi + yj + |xi - xj| where |xi - xj| <= k and 1 <= i < j <= points.length.

It is guaranteed that there exists at least one pair of points that satisfy the constraint |xi - xj| <= k.

Solution

/**
 * @param {number[][]} points
 * @param {number} k
 * @return {number}
 */
var findMaxValueOfEquation = function(points, k) {
  let result = -Infinity;
  const q = [];

  for (let j = 0; j < points.length; j++) {
    const [xj, yj] = points[j];

    while (q.length && xj - points[q[0]][0] > k) {
      q.shift();
    }

    if (q.length) {
      const [xi, yi] = points[q[0]];
      result = Math.max(result, yi + yj + xj - xi);
    }

    while (q.length && yj - xj >= points[q[q.length - 1]][1] - points[q[q.length - 1]][0]) {
      q.pop();
    }

    q.push(j);
  }

  return result;
};