30 Day Challenge Day 22 | Leetcode 1423. Maximum Points You Can Obtain from Cards

题解

Medium

方法:动态规划

左边 k 个数连续求和,右边倒数 k 个数连续求和。然后,两个数组收尾相加,就是 k 次首、尾抽牌的所有组合。

class Solution {
public:
    int maxScore(vector<int>& cardPoints, int k) {
        vector<int> left(1, 0), right(1, 0);
        
        for(int i = 0; i < k; i++) {
            left.push_back(left.back() + cardPoints[i]);
            right.push_back(right.back() + cardPoints[cardPoints.size()-1-i]);
        }
        
        int max_sum = 0;
        
        for(int i = 0; i < k+1; i++) {
           max_sum = max(max_sum, left[i] + right[k-i]);
        }
        
        return max_sum;
    }
};
原文地址:https://www.cnblogs.com/casperwin/p/13790224.html