Skip to content

Commit 10f6b3c

Browse files
authored
Create Max Index
Added maximum index code for array dsa
1 parent 0315c8a commit 10f6b3c

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed

Data-Structures/Array/Max Index

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
<script>
2+
// For a given array []arr,
3+
// calculates the maximum j – i
4+
// such that arr[j] > arr[i]
5+
6+
let v = [34, 8, 10, 3, 2, 80, 30, 33, 1];
7+
let n = v.length;
8+
let maxFromEnd = new Array(n + 1);
9+
10+
for (let i = 0; i < maxFromEnd.length; i++)
11+
maxFromEnd[i] = Number.MIN_VALUE;
12+
13+
// Create an array maxfromEnd
14+
for (let i = v.length - 1; i >= 0; i--)
15+
{
16+
maxFromEnd[i] = Math.max(maxFromEnd[i + 1], v[i]);
17+
}
18+
19+
let result = 0;
20+
21+
for (let i = 0; i < v.length; i++)
22+
{
23+
let low = i + 1, high = v.length - 1, ans = i;
24+
25+
while (low <= high)
26+
{
27+
let mid = parseInt((low + high) / 2, 10);
28+
29+
if (v[i] <= maxFromEnd[mid])
30+
{
31+
// We store this as current
32+
// answer and look for further
33+
// larger number to the right side
34+
ans = Math.max(ans, mid);
35+
low = mid + 1;
36+
}
37+
else
38+
{
39+
high = mid - 1;
40+
}
41+
}
42+
43+
// Keeping a track of the
44+
// maximum difference in indices
45+
result = Math.max(result, ans - i);
46+
}
47+
document.write(result);
48+
49+
</script>

0 commit comments

Comments
 (0)