class Solution {
public:
int maxScore(vector<int>& cardPoints, int k) {
int n = cardPoints.size();
// 滑动窗口大小为 n-k
int windowSize = n - k;
// 选前 n-k 个作为初始值
int sum = accumulate(cardPoints.begin(), cardPoints.begin() + windowSize, 0);
int minSum = sum;
for (int i = windowSize; i < n; ++i) {
// 滑动窗口每向右移动一格,增加从右侧进入窗口的元素值,并减少从左侧离开窗口的元素值
sum += cardPoints[i] - cardPoints[i - windowSize];
minSum = min(minSum, sum);
}
return accumulate(cardPoints.begin(), cardPoints.end(), 0) - minSum;
}
};
或者复制一遍数组,这样的话从第n - k
个位置 跑n
次滑动窗口也可以~ hhh
字好好看!!!(♥∀♥) 天都是ipad为啥我写出来就是草笔..
😂 😂😂 。 写慢一点就可以了
好的👌🏻 我下个决心 改善字体(至少自己能快速认清字和排版,逻辑关系hh)