1696. Jump Game VI
Medium
You are given a 0-indexed integer array nums
and an integer k
.
You are initially standing at index 0
. In one move, you can jump at most k
steps forward without going outside the boundaries of the array. That is, you can jump from index i
to any index in the range [i + 1, min(n - 1, i + k)]
inclusive.
You want to reach the last index of the array (index n - 1
). Your score is the sum of all nums[j]
for each index j
you visited in the array.
Return the maximum score you can get.
Example 1:
Input: nums = [1,-1,-2,4,-7,3], k = 2
Output: 7
Explanation: You can choose your jumps forming the subsequence [1,-1,4,3] (underlined above). The sum is 7.
Example 2:
Input: nums = [10,-5,-2,4,0,3], k = 3
Output: 17
Explanation: You can choose your jumps forming the subsequence [10,4,3] (underlined above). The sum is 17.
Example 3:
Input: nums = [1,-5,-20,4,-1,3,-6,-3], k = 2
Output: 0
Constraints:
1 <= nums.length, k <= 105
-104 <= nums[i] <= 104
class Solution:
def maxResult(self, nums: List[int], k: int) -> int:
#.
dq = deque([0])
for i in range(1, len(nums)):
# Remove old indexes
while dq and dq[0] < (i-k):
dq.popleft()
# Notice that Line 10 causes dq to be in decreasing order,
# So [0] element in dq will be max
nums[i] += nums[dq[0]]
# Make dq in decreasing order
while dq and nums[dq[-1]] <= nums[i]:
dq.pop()
dq.append(i)
return nums[-1]
Last updated