/**
* Problem: LeetCode 3660 - Jump Game IX
* Difficulty: Medium
* Language: Java
* Author: CodeByTushu
*/
class Solution {
public int[] maxValue(int[] nums) {
int n = nums.length;
int[] preMax = new int[n];
preMax[0] = nums[0];
for (int i = 1; i < n; i++) {
preMax[i] = Math.max(preMax[i - 1], nums[i]);
}
int[] ans = new int[n];
int sufMin = Integer.MAX_VALUE;
for (int i = n - 1; i >= 0; i--) {
ans[i] = (preMax[i] > sufMin) ? ans[i + 1] : preMax[i];
sufMin = Math.min(sufMin, nums[i]);
}
return ans;
}
}
"""
Problem: LeetCode 3660 - Jump Game IX
Difficulty: Medium
Language: Python
Author: CodeByTushu
"""
from typing import List
class Solution:
def maxValue(self, nums: List[int]) -> List[int]:
n = len(nums)
pre_max = [0] * n
pre_max[0] = nums[0]
for i in range(1, n):
pre_max[i] = max(pre_max[i - 1], nums[i])
ans = [0] * n
suf_min = float('inf')
for i in range(n - 1, -1, -1):
ans[i] = ans[i + 1] if pre_max[i] > suf_min else pre_max[i]
suf_min = min(suf_min, nums[i])
return ans
/**
* Problem: LeetCode 3660 - Jump Game IX
* Difficulty: Medium
* Language: C++
* Author: CodeByTushu
*/
#include <vector>
#include <algorithm>
#include <climits>
using namespace std;
class Solution {
public:
vector<int> maxValue(vector<int>& nums) {
int n = nums.size();
vector<int> preMax(n);
preMax[0] = nums[0];
for (int i = 1; i < n; ++i) {
preMax[i] = max(preMax[i - 1], nums[i]);
}
vector<int> ans(n);
int sufMin = INT_MAX;
for (int i = n - 1; i >= 0; --i) {
ans[i] = (preMax[i] > sufMin) ? ans[i + 1] : preMax[i];
sufMin = min(sufMin, nums[i]);
}
return ans;
}
};
/**
* Problem: LeetCode 3660 - Jump Game IX
* Difficulty: Medium
* Language: JavaScript
* Author: CodeByTushu
*/
var maxValue = function(nums) {
const n = nums.length;
const preMax = new Array(n);
preMax[0] = nums[0];
for (let i = 1; i < n; i++) {
preMax[i] = Math.max(preMax[i - 1], nums[i]);
}
const ans = new Array(n);
let sufMin = Infinity;
for (let i = n - 1; i >= 0; i--) {
ans[i] = preMax[i] > sufMin ? ans[i + 1] : preMax[i];
sufMin = Math.min(sufMin, nums[i]);
}
return ans;
};