[Java 99.94% Faster] Remove Elements with Greatest Element on Right Side


// O(n^2) Solution: The Naive Approach

// class Solution {
//     public int[] replaceElements(int[] arr) {
//         int i = 0;
//         for(i = 0; i < arr.length-1; i++){
//             int max = -1;
//             for(int j = i+1; j < arr.length; j++){
//                 if(arr[j] >= max)
//                     max = arr[j];
//             }
//             // if(max >= arr[i])
//             arr[i] = max;
//         }
//         arr[i] = -1;
//         return arr;
//     }
// }


// O(n) Solution
class Solution {
    public int[] replaceElements(int[] arr) {
        int i, L = arr.length-1;
        int max = arr[L];
        for(i = L-1; i >= 0; i--){
            int temp = max;
            if(arr[i] >= max)
                max = arr[i];
            arr[i] = temp;
        }
        arr[L] = -1;
        return arr;
    }
}


Comments (0)