// class Solution {
// maxIndexDiff(arr, n) {
// if (n === 1) {
// return 0;
// }
// let maxDiff = 0;
// let i = 0, j = 0;
// let LMin = new Array(n);
// let RMax = new Array(n);
// LMin[0] = arr[0];
// for (i = 1; i < n; i++) {
// LMin[i] = Math.min(arr[i], LMin[i - 1]);
// }
// RMax[n - 1] = arr[n - 1];
// for (j = n - 2; j >= 0; j--) {
// RMax[j] = Math.max(arr[j], RMax[j + 1]);
// }
// while (i < n && j < n) {
// if (LMin[i] <= RMax[j]) {
// maxDiff = Math.max(maxDiff, j - i);
// j = j + 1;
// } else {
// i = i + 1;
// }
// if (i === j && i !== n - 1) {
// i = i + 1;
// j = j + 1;
// }
// if (i === n - 1 && j === n - 1) {
// break;
// }
// }
// return maxDiff;
// }
// }
class Solution {
maxIndexDiff(arr) {
let n = arr.length;
if (n === 1) {
return 0;
}
let maxDiff = -1;
let LMin = new Array(n);
let RMax = new Array(n);
LMin[0] = arr[0];
for (let i = 1; i < n; ++i) {
LMin[i] = Math.min(arr[i], LMin[i - 1]);
}
RMax[n - 1] = arr[n - 1];
for (let j = n - 2; j >= 0; --j) {
RMax[j] = Math.max(arr[j], RMax[j + 1]);
}
let i = 0, j = 0;
while (i < n && j < n) {
if (LMin[i] <= RMax[j]) {
maxDiff = Math.max(maxDiff, j - i);
j++;
} else {
i++;
}
}
return maxDiff;
}
}
let sol = new Solution()
let ans = sol.maxIndexDiff([1, 10])
console.log(ans)
To embed this project on your website, copy the following code and paste it into your website's HTML: