Участник:Timplech/maximum points from cards

Материал из DISCOPAL
< Участник:Timplech
Версия от 19:25, 25 декабря 2020; Timplech (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

https://leetcode.com/problems/maximum-points-you-can-obtain-from-cards/submissions/

python3

class Solution:
    def maxScore(self, cardPoints: List[int], k: int) -> int:
        n = len(cardPoints)
        if n == 0:
            return 0
 
        left = list((0 for _ in range(n)))
        right = list((0 for _ in range(n)))
        left[0] = cardPoints[0]
        right[n - 1] = cardPoints[n - 1]
        for i in range(1, n):
            left[i] = left[i - 1] + left[i] + cardPoints[i];
        for j in range(2, n):
            right[n - j] = right[n - j] + right[n - j + 1] + cardPoints[n - j];
 
        result = 0
        for i in range(0, n):
            if i < k-1:
                possible = left[i] + right[n - k + 1 + i]
                if possible > result:
                    result = possible
            if i <= k - 1 and left[i] > result:
                result = left[i]
        for i in range(0, n):
            if i <= k - 2:
                possible = left[k - i - 2] + right[n - 1 - i];
                if possible > result:
                    result = possible
            if i <= k - 1 and right[n - 1 - i] > result:
                result = right[n - 1 - i]
        return result;