Computer >> Máy Tính >  >> Lập trình >> Javascript

Tổng lớn nhất và chênh lệch chỉ mục nhỏ nhất trong JavaScript

Vấn đề

Hàm JavaScript nhận một mảng Số nguyên, arr, làm đối số đầu tiên và duy nhất.

Hàm của chúng ta nên chọn một cặp chỉ mục (i, j) sao cho (arr [i] + arr [j]) + (i - j) là lớn nhất trong số tất cả các cặp chỉ mục trong mảng. Khi đó, hàm của chúng ta sẽ trả về giá trị lớn nhất.

Ví dụ:nếu đầu vào của hàm là -

const arr = [8, 1, 5, 2, 6];

Sau đó, đầu ra phải là -

const output = 11;

Giải thích đầu ra

Bởi vì nếu chúng ta chọn i =0 và j =2 thì giá trị sẽ là -

(8 + 5) + (0 - 2) = 11

Đây thực sự là mức tối đa cho bất kỳ cặp chỉ mục nào.

Ví dụ

Mã cho điều này sẽ là -

const arr = [8, 1, 5, 2, 6];
const findMaximum = (arr = []) => {
   let max = arr[0] + 0;
   let res = -Infinity;
   for(let i = 1; i < arr.length; i++){
      res = Math.max(res, max + arr[i] - i);
      max = Math.max(arr[i] + i, max);
   };
   return res;
};
console.log(findMaximum(arr));

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

11