class Solution {
public:
int maxScore(vector<int>& cardPoints, int k) {
int n = cardPoints.size();
if(!n) return 0;
int now = 0;
for(int i =0;i<n-k;i++) {
now+=cardPoints[i];
}
int all = now ,answer = now;
for(int i =1;i<=k;i++){
now = now - cardPoints[i-1] + cardPoints[i+n-k-1];
all += cardPoints[i-1+n-k];
answer = now>answer?answer:now;
}
return all-answer;
}
};
解题结果:
思路:
得到取得值的最大值即为剩下值的最小值,而取出的数个数一定的情况下剩下的数个数也是一定的,使用滑动窗口即解。