Leetcode 1423. 可獲得的最大點數
阿新 • • 發佈:2021-02-07
技術標籤:leetcode
20210206 每日一題
思路:比較簡單的想法是無論是選多少個,都是左邊連續選一部分,右邊連續選一部分。提前算好從左到右和從右到左的字首和,然後只要遍歷一遍左邊連續選多少就可以了。
程式碼:
class Solution {
public:
int maxScore(vector<int>& cardPoints, int k) {
vector<int> lsum,rsum;
int len = cardPoints.size();
int acc=0;
for (int i=0;i<len;++i){
acc+=cardPoints[i];
lsum.push_back(acc);
}
acc=0;
for(int i=len-1;i>=0;--i){
acc+=cardPoints[i];
rsum.push_back(acc);
}
int ans=0;
ans=max(rsum[k-1],lsum[k-1]);
for(int i=1; i<k;++i){
ans=max (ans,rsum[k-i-1]+lsum[i-1]);
}
return ans;
}
};
每日一記:快樂週六,還在感冒。每天都在折小餛飩。