• 難度分: 1574
  • 這題同樣是定長度的 sliding window,但要透過一點轉換,變成求 window = n - k 的最小和
class Solution {
public:
    int maxScore(vector<int>& cardPoints, int k) {
        int n = cardPoints.size();
        int m = n-k;
        int sum = 0;
        for (int i = 0; i < m; i++) {
            sum += cardPoints[i];
        }
        int total = sum;
        int min_window_sum = sum;
        for (int i = m; i < n; i++) {
            sum += (cardPoints[i] - cardPoints[i-m]);
            total += cardPoints[i];
            min_window_sum = min(min_window_sum, sum);
        }
        return total - min_window_sum;
    }
};