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

Chênh lệch chỉ số của cặp tuple trong JavaScript

Mô tả vấn đề

Hàm JavaScript nhận vào mảng số nguyên arr. Giả sử hai chỉ số i, j thỏa: i < j và arr[i] ≤ arr[j]. Trong tất cả các cặp (i, j) như vậy, hàm trả về chênh lệch j - i lớn nhất.

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

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

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

const output = 4;

Giải thích đầu ra

Chênh lệch lớn nhất tại (i, j) = (1, 5): arr[1] = 0, arr[5] = 5.

Ví dụ minh họa

Mã thực hiện (stack đơn điệu + duyệt ngược):

const arr = [6, 0, 8, 2, 1, 5]; 
const maximumDifference = (arr = []) => { 
  let max = 0; 
  const stack = [0]; 
  for (let i = 1; i < arr.length; i++) { 
    if (arr[i] < arr[stack[stack.length - 1]]) { 
      stack.push(i); 
    } 
  } 
  for (let i = arr.length - 1; i >= 0; i--) { 
    while (arr[i] >= arr[stack[stack.length - 1]]) { 
      max = Math.max(max, i - stack.pop()); 
    } 
  } 
  return max; 
}; 
console.log(maximumDifference(arr));

Đầu ra

Kết quả trong console:

4