Maximum Points You Can Obtain from Cards
MediumArraySliding WindowPrefix Sum
Solution
export function maxScore(cardPoints: number[], k: number): number {
const sumCardPoints = (prev: number, curr: number) => prev + curr;
const n = cardPoints.length;
const totalPoint = cardPoints.reduce(sumCardPoints, 0);
let prevPoint = cardPoints.slice(0, n - k).reduce(sumCardPoints, 0);
let answer = totalPoint - prevPoint;
for (let i = 0; i < k; i++) {
prevPoint = prevPoint - cardPoints[i] + cardPoints[i + (n - k)];
answer = Math.max(answer, totalPoint - prevPoint);
}
return answer;
}