Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Tổng lớn nhất và chênh lệch chỉ số nhỏ nhất trong JavaScript

Mô tả vấn đề

Hàm JavaScript nhận vào mảng số nguyên arr làm đối số duy nhất. Hàm chọn cặp chỉ số (i, j) sao cho (arr[i] + arr[j]) + (i - j) lớn nhất trong tất cả cặp chỉ số. Trả về giá trị lớn nhất đó.

Ví dụ, nếu đầu vào là:

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

Thì đầu ra nên là:

const output = 11;

Giải thích đầu ra

Chọn i = 0, j = 2: (8 + 5) + (0 - 2) = 11. Đây là giá trị lớn nhất.

Ví dụ minh họa

Mã thực hiện (O(n)):

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

Kết quả trong console sẽ là:

11