1046. 最後一塊石頭的重量

有一堆石頭,每塊石頭的重量都是正整數。

每一回合,從中選出兩塊最重的石頭,然後將它們一起粉碎。假設石頭的重量分別爲 x 和 y,且 x <= y。那麼粉碎的可能結果如下:

    如果 x == y,那麼兩塊石頭都會被完全粉碎;
    如果 x != y,那麼重量爲 x 的石頭將會完全粉碎,而重量爲 y 的石頭新重量爲 y-x。

最後,最多隻會剩下一塊石頭。返回此石頭的重量。如果沒有石頭剩下,就返回 0。

思路:模擬這個過程..在這個當中沒有過多的優化只有對過程的模仿

class Solution:
    def lastStoneWeight(self, stones: List[int]) -> int:
        # 只要還有兩個以上的石頭,循環就要進行下去
        while len(stones)>=2:
            #排序,然後最後兩個元素就是需要進行碰撞的連個石頭
            stones.sort()
            chazhi=stones[-1]-stones[-2]
            # 從列表彈出
            tan1=stones.pop()
            tan2=stones.pop()
            #如果沒有消失將剩餘的重量成爲一個元素加入列表
            if chazhi!=0:
                stones.append(chazhi)
        #如果最後剩餘一個石頭
        if len(stones)==1:
            return stones[0]
        else:
            return 0

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章