public static void main(String[] args) {
// Input:
// N = 4, arr[] = [1 3 2 4]
// Output:
// 3 4 4 -1
// N = 4, arr[] = [1 3 2 4]
long start = System.currentTimeMillis();
int N = 4;
long arr[] = {1, 3, 2, 4};
long[] res = nextLargerElement(arr, N);
for (long re : res) {
System.out.println(re);
}
long end = System.currentTimeMillis();
long total = end - start;
System.out.println(total);
}
//Function to find the next greater element for each element of the array.
public static long[] nextLargerElement(long[] arr, int n) {
long[] res = new long[arr.length];
for (int i = 0; i < arr.length; i++) {
long temp = arr[i];
long[] subArr = Arrays.copyOfRange(arr, i, arr.length);
long biggerEl = -1;
innerloop:
for (long lo : subArr) {
if (lo > temp) {
biggerEl = lo;
break innerloop;
}
}
// while (lo > temp){
//
// }
res[i] = biggerEl;
}
return res;
}
public static long getBiggerElement(int i, long[] arr) {
long temp = arr[i];
// long[] tempArray = Arrays.copyOfRange(arr, i, arr.length);
long[] subArr = new long[arr.length - i];
for (int a = 0; a < subArr.length; a++) {
subArr[a] = arr[i + a];
}
long biggerEl = -1;
for (long lo : subArr) {
if (lo > temp) {
biggerEl = lo;
break;
}
}
return biggerEl;
}
No comments:
Post a Comment