1. 程式人生 > 實用技巧 >Python + logging 輸出到螢幕,將log日誌寫入檔案

Python + logging 輸出到螢幕,將log日誌寫入檔案

技術標籤:資料結構與演算法優先順序佇列leetcode資料結構

題目描述:有一堆石頭,每塊石頭的重量都是正整數。
每一回合,從中選出兩塊 最重的 石頭,然後將它們一起粉碎。假設石頭的重量分別為 x 和 y,且 x <= y。那麼粉碎的可能結果如下:
如果 x == y,那麼兩塊石頭都會被完全粉碎;
如果 x != y,那麼重量為 x 的石頭將會完全粉碎,而重量為 y 的石頭新重量為 y-x。
最後,最多隻會剩下一塊石頭。返回此石頭的重量。如果沒有石頭剩下,就返回 0。
解題思路:用大頂推儲存所有的石頭,每次取出最大的兩塊做碰撞,如果有剩餘的則將差值加入佇列中,直到只剩下不大於1塊石頭,沒有石頭則返回零,程式碼如下:

class Solution:
    def lastStoneWeight(self, stones: List[int]) -> int:
        from queue import PriorityQueue
        q = PriorityQueue()
        for s in stones:
            q.put(-s)
        while(q.qsize() > 1):
            cur1 = q.get()
            cur2 = q.get()
            if cur1 !=
cur2: q.put(cur1-cur2) return -q.get() if q.qsize() else 0