Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 9f67953

Browse files
author
Ram swaroop
committed
solution done
1 parent be74c1e commit 9f67953

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package me.ramswaroop.arrays;
2+
3+
/**
4+
* Created by IntelliJ IDEA.
5+
*
6+
* @author: ramswaroop
7+
* @date: 9/1/15
8+
* @time: 10:21 PM
9+
*/
10+
public class MaxIndexDiff {
11+
12+
/**
13+
* @param a
14+
* @return
15+
*/
16+
public static int maxDiff(int[] a) {
17+
int maxDiff = -1;
18+
int[] leftMin = new int[a.length], rightMax = new int[a.length];
19+
20+
leftMin[0] = a[0];
21+
for (int i = 1; i < a.length; i++) {
22+
leftMin[i] = Math.min(a[i], leftMin[i - 1]);
23+
}
24+
25+
rightMax[a.length - 1] = a[a.length - 1];
26+
for (int i = a.length - 2; i >= 0; i--) {
27+
rightMax[i] = Math.max(a[i], rightMax[i + 1]);
28+
}
29+
30+
for (int i = 0, j = 0; i < a.length && j < a.length; ) {
31+
if (rightMax[j] > leftMin[i]) {
32+
maxDiff = Math.max(maxDiff, j - i);
33+
j++;
34+
} else {
35+
i++;
36+
}
37+
}
38+
return maxDiff;
39+
}
40+
41+
public static void main(String a[]) {
42+
System.out.println(maxDiff(new int[]{34, 8, 10, 3, 2, 80, 30, 33, 1}));
43+
System.out.println(maxDiff(new int[]{9, 2, 3, 4, 5, 6, 7, 8, 18, 0}));
44+
System.out.println(maxDiff(new int[]{1, 2, 3, 4, 5, 6}));
45+
System.out.println(maxDiff(new int[]{6, 5, 4, 3, 2, 1}));
46+
System.out.println(maxDiff(new int[]{10, 11, 12, 13, 14, 6, 9, 7, 5, 3}));
47+
}
48+
}

0 commit comments

Comments
 (0)