LeetCode-in-Java

3660. Jump Game IX

Medium

You are given an integer array nums.

From any index i, you can jump to another index j under the following rules:

For each index i, find the maximum value in nums that can be reached by following any sequence of valid jumps starting at i.

Return an array ans where ans[i] is the maximum value reachable starting from index i.

Example 1:

Input: nums = [2,1,3]

Output: [2,2,3]

Explanation:

Thus, ans = [2, 2, 3].

Example 2:

Input: nums = [2,3,1]

Output: [3,3,3]

Explanation:

Thus, ans = [3, 3, 3].

Constraints:

Solution

public class Solution {
    public int[] maxValue(int[] nums) {
        int[] f = new int[nums.length];
        int cur = 0;
        for (int i = 0; i < nums.length; i++) {
            cur = Math.max(cur, nums[i]);
            f[i] = cur;
        }
        int min = nums[nums.length - 1];
        for (int i = nums.length - 2; i >= 0; i--) {
            if (f[i] > min) {
                f[i] = Math.max(f[i], f[i + 1]);
            }
            min = Math.min(min, nums[i]);
        }
        return f;
    }
}