package me.ramswaroop.arrays;
import java.util.Arrays;
/**
* Created by IntelliJ IDEA.
*
* @author: ramswaroop
* @date: 7/29/15
* @time: 12:06 PM
*/
public class LeadersInArray {
/**
* Returns an array containing all leaders present in {@param a}.
* An element is a LEADER if its greater than all elements to
* the right of it in the array.
*
* @param a
* @return
*/
public static int[] getAllLeaders(int[] a) {
int i = a.length - 2, j = 0;
int[] leaders = new int[a.length];
// rightmost element is always a leader
leaders[0] = a[a.length - 1];
for (; i >= 0; i--) {
if (a[i] > leaders[j]) {
leaders[++j] = a[i];
}
}
// omit the extra space which aren't filled with leaders
return Arrays.copyOfRange(leaders, 0, j + 1);
}
public static void main(String a[]) {
System.out.println(Arrays.toString(getAllLeaders(new int[]{16, 17, 4, 3, 5, 2})));
System.out.println(Arrays.toString(getAllLeaders(new int[]{16, 1, 4, 3, 5, 12})));
System.out.println(Arrays.toString(getAllLeaders(new int[]{16, 15, 14, 13, 12, 10})));
}
}