class LeadersInArray 
{
    void printLeaders(int arr[], int size)
    {
        int max_from_right =  arr[size-1];
        /* Rightmost element is always leader */
        System.out.print(max_from_right + " ");
        for (int i = size-2; i >= 0; i--)
        {
            if (max_from_right < arr[i])
            {           
            max_from_right = arr[i];
            System.out.print(max_from_right + " ");
            }
        }    
    }
    /* Driver program to test above functions */
    public static void main(String[] args) 
    {
        LeadersInArray lead = new LeadersInArray();
        int arr[] = new int[]{16, 17, 4, 3, 5, 2};
        int n = arr.length;
        lead.printLeaders(arr, n);
    }
}
the output of this program is 2,5,17 . MY question is can i print result in inplace manner i.e 17, 5 and then 2 (as they appear in original array) except for storing it in separate array and then traversing in reverse manner as that will add to space complexity of O(n).
 
     
     
     
    