Vấn đề
Chúng tôi được yêu cầu viết một hàm JavaScript lấy một mảng các số nguyên, arr, làm đối số đầu tiên và duy nhất.
Giả sử hai chỉ số i và j trong mảng thỏa mãn các điều kiện sau -
-
i
-
arr [i] <=arr [j]
Trong số tất cả các bộ chỉ mục như vậy (i, j), hàm của chúng ta sẽ trả về sự khác biệt j - i, đây là giá trị lớn nhất.
Ví dụ:nếu đầu vào của hàm là -
const arr = [6, 0, 8, 2, 1, 5];
Sau đó, đầu ra phải là -
const output = 4;
Giải thích đầu ra
Sự khác biệt lớn nhất đạt được tại (i, j) =(1, 5):arr [1] =0 và arr [5] =5.
Ví dụ
Mã cho điều này sẽ là -
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
Và đầu ra trong bảng điều khiển sẽ là -
4