解题思路
第一.牌只能从两边抽取牌
第二.抽取k张牌,那么会剩下cardPoints.length-k张牌
也就是说我们只要保证这剩下的牌是最小的,那么抽出的就是最大牌组
代码
class Solution {
public int maxScore(int[] cardPoints, int k) {
int sum=0,left = 0,right = 0,min = 0,temp=0;
for (int a: cardPoints) {
sum+=a;
}
for (int i=0;i<cardPoints.length-k;i++){
min += cardPoints[i];
right++;
}
temp=min;
while (right<cardPoints.length){
temp=temp-cardPoints[left]+cardPoints[right];
min =Math.min(min,temp);
right++;
left++;
}
return sum-min;
}
}