题目
小明和朋友们一起玩跳格子游戏,
每个格子上有特定的分数 score = [1, -1, -6, 7, -17, 7],
从起点score[0]开始,每次最大的步长为k,请你返回小明跳到终点 score[n-1] 时,能得到的最大得分。
输入描述
第一行输入总的格子数量 n
第二行输入每个格子的分数 score[i]
第三行输入最大跳的步长 k
输出描述
输出最大得分
备注
格子的总长度 n 和步长 k 的区间在 [1, 100000]
每个格子的分数 score[i] 在 [-10000, 10000] 区间中
用例
输入
6
1 -1 -6 7 -17 7
2
输出
14
解题思路
通过动态规划和滑动窗口相结合,使用 deque 来维护当前步长范围内的最大得分索引。初始化 dp 数组并从起点开始遍历,每次移除超出步长范围的元素,计算当前格子的最大得分,并从队尾移除所有小于当前得分的元素以保持单调性。时间复杂度是O(n)。
代码