美文网首页
LeetCode 1046. Last Stone Weight

LeetCode 1046. Last Stone Weight

作者: LiNGYu_NiverSe | 来源:发表于2020-11-10 00:36 被阅读0次

    We have a collection of stones, each stone has a positive integer weight.

    Each turn, we choose the two heaviest stones and smash them together. Suppose the stones have weights x and y with x <= y. The result of this smash is:

    If x == y, both stones are totally destroyed;
    If x != y, the stone of weight x is totally destroyed, and the stone of weight y has new weight y-x.
    At the end, there is at most 1 stone left. Return the weight of this stone (or 0 if there are no stones left.)

    Example 1:

    Input: [2,7,4,1,8,1]
    Output: 1
    Explanation:
    We combine 7 and 8 to get 1 so the array converts to [2,4,1,1,1] then,
    we combine 2 and 4 to get 2 so the array converts to [2,1,1,1] then,
    we combine 2 and 1 to get 1 so the array converts to [1,1,1] then,
    we combine 1 and 1 to get 0 so the array converts to [1] then that's the value of last stone.

    Note:

    1 <= stones.length <= 30
    1 <= stones[i] <= 1000

    Solution

    class Solution:
        def lastStoneWeight(self, stones: List[int]) -> int:
            #edge case
            if not stones: 
                return 0
            elif len(stones) == 1:
                return stones[0]
            elif len(stones) == 2:
                return abs(stones[0] - stones[1])
            else:
                max1 = max(stones)
                stones.remove(max1)
                max2 = max(stones)
                stones.remove(max2)
                if max1 != max2:
                    stones.append(max1- max2)
            val  = self.lastStoneWeight(stones)
            return val
            
    

    Explanation
    Since each time we need to find the two max values of the list, we can use recursion to solve this problem. In each recursion, we find that two elements and delete them first, if they are not the same, we add the substract. Finally, we will reach the edge case and thus return the answer.

    相关文章

      网友评论

          本文标题:LeetCode 1046. Last Stone Weight

          本文链接:https://www.haomeiwen.com/subject/hqldbktx.html