Jump Game IX

Medium
Watch on YouTube ↗

Solution

class Solution {
    public int[] maxValue(int[] nums) {
        
        int n = nums.length;

        int maxprefix[] = new int[n];
        int minsuffix[] = new int[n];

        maxprefix[0] = nums[0];
        minsuffix[n-1] = nums[n-1];

        for(int i=1; i<nums.length; i++) {
            maxprefix[i] = Math.max(nums[i], maxprefix[i-1]);
        }

        for(int i=n-2; i>=0; i--) {
            minsuffix[i] = Math.min(nums[i], minsuffix[i+1]);
        }

        int ans[] = new int[n];

        ans[n-1] = maxprefix[n-1];


        for(int i=n-2; i>=0; i--) {
            if(maxprefix[i] > minsuffix[i+1])
                ans[i] = ans[i+1];
            else ans[i] = maxprefix[i];
        }

        return ans;
    }
}