leetcode1423_2-6每日题:可获得的最大点数

class Solution {
    
    
public:
    int maxScore(vector<int>& cardPoints, int k) {
    
    
        int n = cardPoints.size();
        if(!n) return 0;
        int now = 0;
        for(int i =0;i<n-k;i++) {
    
    
            now+=cardPoints[i];
        }
        int all = now ,answer = now;
        for(int i =1;i<=k;i++){
    
    
            now  = now - cardPoints[i-1] + cardPoints[i+n-k-1];
            all += cardPoints[i-1+n-k];
            answer = now>answer?answer:now;
        }
        return all-answer;
    }
};

解题结果:
在这里插入图片描述
思路:
得到取得值的最大值即为剩下值的最小值,而取出的数个数一定的情况下剩下的数个数也是一定的,使用滑动窗口即解。

猜你喜欢

转载自blog.csdn.net/SJTU_liangge/article/details/113721512