本文主要是介绍1423. 可获得的最大点数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
根据题解,由于总是从头和尾选取这k
张牌,则最后剩下的n-k
张牌一定是连续的,则要求k
张牌的最大值,相当于取n-k
张连续的牌的最小值。
class Solution {
public:int maxScore(vector<int>& cardPoints, int k) {int n = cardPoints.size();int len = n - k;int sum = 0;int minSum = 0, curSum = 0;for (int i = 0; i < n; ++i) {sum += cardPoints[i];if (i == len - 1) {minSum = sum;curSum = sum;}if (len > 0 && i >= len && i < n) {curSum = curSum + cardPoints[i] - cardPoints[i - len];minSum = min(minSum, curSum);}}return sum - minSum;}
};
这篇关于1423. 可获得的最大点数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!