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