https://leetcode-cn.com/problems/maximum-points-you-can-obtain-from-cards/
建议使用滑动窗口或者前缀和枚举。
class Solution {
public:
int maxScore(vector<int>& nums, int k) {
int n=nums.size();
vector<int> prefix_sum(n,0);
prefix_sum[0]=nums[0];
for(int i=1;i<n;i++){
prefix_sum[i]=prefix_sum[i-1]+nums[i];
}
int l=0,r=n-1;
int ans=0;
while(k){
int left_sum=0;
if(l-1<0)
left_sum=prefix_sum[l+k-1];
else
left_sum=prefix_sum[l+k-1]-prefix_sum[l-1];
int right_sum=0;
if(r-k<0)
right_sum=prefix_sum[r];
else
right_sum=prefix_sum[r]-prefix_sum[r-k];
if(left_sum>=right_sum){
ans+=nums[l];
l++;
}
else{
ans+=nums[r];
r--;
}
k--;
}
return ans;
}
};