Link
https://leetcode.com/problems/maximum-points-you-can-obtain-from-cards/
My Code:
class Solution:
def maxScore(self, cardPoints: List[int], k: int) -> int:
if k>= len(cardPoints):
return sum(cardPoints)
else:
RestLength = len(cardPoints) - k
TotalSum = sum(cardPoints)
PartSum = sum(cardPoints[0:RestLength])
Min =PartSum
for new in range(RestLength,len(cardPoints)):
old = new -RestLength
PartSum= PartSum - cardPoints[old]+cardPoints[new]
Min = min(Min,PartSum)
return TotalSum - Min
Explanation: The idea is clear , no matter which side you choose, the list left must be continuous and the length is total length – k. Then we just need to write an iteration to calculate minimum of the list. Notice that if we use sum function here, it will exceed time limit as sum function also originates from the iteration.