1736. Throw garbage

从大袋子拿起,如果拿完了还可以再拿一个,那就带上,不然就直接走。

排序了再开始拿,方便操作。

class Solution:
    """
    @param BagList: the weight of all garbage bags.
    @return: an integer represent the minimum number of times.
    """
    def Count_ThrowTimes(self, BagList):
        res = 0
        q = collections.deque(sorted(BagList))
        while q:
            bag = q.pop()
            if q and bag + q[0] <= 3.0:
                q.popleft()
            res += 1
        
        return res

想要用 heap 直接 inplace 操作的,省去sort用的O(N)空间,但不知道咋回事儿总有 test case 过不去... 代码先放着了我慢慢研究 debug.

class Solution:
    def Count_ThrowTimes(self, BagList):
        
        res = 0
        heapq.heapify(BagList)
        
        while BagList:
            bag = BagList.pop()
            if BagList and bag + BagList[0] <= 3.0:
                heapq.heappop(BagList)
            res += 1
        
        return res

Last updated

Was this helpful?