解题思路
滑动窗口不难写,还固定长度了
现在的问题是,怎么用滑动窗口的?
这步才是关键吧
首先我们知道它取数字只能从两边取emmm,那其实很难去模拟
但是,它中间那段是连续的鸭!
那就是了,中间滑动取最小值就好了
代码
class Solution {
public:
int maxScore(vector<int>& cardPoints, int k) {
int len=cardPoints.size();
int si=len-k;
long long sum=0;
long long start=0;
for(int j=0;j<len;j++){
sum+=cardPoints[j];
if(j<si){
start+=cardPoints[j];//si项前缀和
}
}
long long minx=start;
for(int i=0;i+si<len;i++){
start=start-cardPoints[i]+cardPoints[i+si];
minx=min(minx,start);
}
return sum-minx;
}
};