https://leetcode.cn/problems/maximum-fruits-harvested-after-at-most-k-steps/submissions/596428450/
2062分
刺激
var maxTotalFruits = function (fruits, startPos, k) {
const cache = new Map();
for (let index = 0; index < fruits.length; index++) {
const fruit = fruits[index];
cache.set(fruit[0], fruit[1]);
}
const nextArr = new Array(k + 1);
const preArr = new Array(k + 1);
let ans = 0;
preArr[0] = 0;
nextArr[0] = 0;
for (let index = 1; index <= k; index++) {
nextArr[index] =
(nextArr[index - 1] ?? 0) + (cache.get(startPos + index) ?? 0);
preArr[index] =
(preArr[index - 1] ?? 0) + (cache.get(startPos - index) ?? 0);
}
ans = Math.max(nextArr[k], preArr[k]);
let step = 1;
while (step * 2 < k) {
ans = Math.max(ans, preArr[step] + nextArr[k - 2 * step]);
ans = Math.max(ans, nextArr[step] + preArr[k - 2 * step]);
step++;
}
return ans+(cache.get(startPos)??0);
};