1423. 可获得的最大点数
分类:前缀和
无论怎么选,最终结果都是前i
个与后k-i
个的和;可以通过逐步增加后k-i
个的数量来遍历所有结果
class Solution {
public:
int maxScore(vector<int>& cardPoints, int k) {
int preSum = 0, postSum = 0;
for(int i=0; i<k; i++) preSum += cardPoints[i];
int ans = preSum;
for(int i=k-1, j=cardPoints.size()-1; i>-1; i--, j--){
preSum -= cardPoints[i];
postSum += cardPoints[j];
ans = max(ans, preSum+postSum);
}
return ans;
}
};/* 87.2% **/
class Solution {
public:
int maxScore(vector<int>& cardPoints, int k) {
int preSum = 0;
int n = cardPoints.size();
for(int i=0; i<k; i++) preSum += cardPoints[i];
int ans = preSum;
for(int i=k-1; i>-1; i--){
preSum = preSum - cardPoints[i] + cardPoints[n+i-k];
ans = max(ans, preSum);
}
return ans;
}
};/* 100% */
2021/02/06