给你一个整数数组 nums
。
从任意下标 i
出发,你可以根据以下规则跳跃到另一个下标 j
:
nums[j] < nums[i]
时,才允许跳跃到下标 j
,其中 j > i
。nums[j] > nums[i]
时,才允许跳跃到下标 j
,其中 j < i
。对于每个下标 i
,找出从 i
出发且可以跳跃 任意 次,能够到达 nums
中的 最大值 是多少。
返回一个数组 ans
,其中 ans[i]
是从下标 i
出发可以到达的最大值。
示例 1:
输入: nums = [2,1,3]
输出: [2,2,3]
解释:
i = 0
:没有跳跃方案可以获得更大的值。i = 1
:跳到 j = 0
,因为 nums[j] = 2
大于 nums[i]
。i = 2
:由于 nums[2] = 3
是 nums
中的最大值,没有跳跃方案可以获得更大的值。因此,ans = [2, 2, 3]
。
示例 2:
输入: nums = [2,3,1]
输出: [3,3,3]
解释:
i = 0
:向后跳到 j = 2
,因为 nums[j] = 1
小于 nums[i] = 2
,然后从 i = 2
跳到 j = 1
,因为 nums[j] = 3
大于 nums[2]
。i = 1
:由于 nums[1] = 3
是 nums
中的最大值,没有跳跃方案可以获得更大的值。i = 2
:跳到 j = 1
,因为 nums[j] = 3
大于 nums[2] = 1
。因此,ans = [3, 3, 3]
。
提示:
1 <= nums.length <= 105
1 <= nums[i] <= 109