Leetcode 1824 Solution

This article provides solution to leetcode question 1824 (maximum-number-of-eaten-apples)

https://leetcode.com/problems/maximum-number-of-eaten-apples

Solution

class Solution:
    def eatenApples(self, apples: List[int], days: List[int]) -> int:
        q = []

        data = list(zip(apples, days))

        t = 0
        ans = 0
        while q or t < len(data):
            # step 1: expire apples
            while q and q[0][0] <= t:
                heapq.heappop(q)

            # step 2: add new apples
            if t < len(data):
                apple, day = data[t]

                if apple > 0 and day > 0:
                    heapq.heappush(q, (t + day, apple))

            # step 3: eat apple if possible
            if q:
                expire_day, apple = heapq.heappop(q)
                ans += 1
                apple -= 1

                if apple > 0:
                    heapq.heappush(q, (expire_day, apple))

            t += 1

        return ans