---
# System prepended metadata

title: 1423. Maximum Points You Can Obtain from Cards
tags: [Leetcode, Two Pointers, Medium]

---

# 1423. Maximum Points You Can Obtain from Cards
###### tags: `Leetcode` `Medium` `Two Pointers`
Link: https://leetcode.com/problems/maximum-points-you-can-obtain-from-cards/
## 思路
two pointers
遍历所有从前面取的数字个数+从后面取的数字个数=k的组合
## Code
```cpp=
class Solution {
public:
    int maxScore(vector<int>& cardPoints, int k) {
        int n = cardPoints.size();
        vector<int> preSum;
        vector<int> postSum;
        int sum = 0;
        for(int card:cardPoints){
            sum += card;
            preSum.push_back(sum);
        }
        sum = 0;
        for(int i=n-1; i>=0; i--){
            sum += cardPoints[i];
            postSum.push_back(sum);
        }
        int ans = max(preSum[k-1], postSum[k-1]);
        for(int i=k-2; i>=0; i--){
            ans = max(ans, preSum[i]+postSum[k-2-i]); 
        }
        return ans;
    }
};
```