首页 > 其他 > 详细

1046. Last Stone Weight

时间:2021-04-09 00:01:42      阅读:20      评论:0      收藏:0      [点我收藏+]

思路:

直接用大顶堆,每次取两个数来比较即可,难点是循环的条件为什么。
考虑两种情况,最后堆只有一个元素,那么就返回这个元素值,最后堆没有元素,为什么呢,因为我们每次去两个数,如果倒数第二步还剩下两个石头,且相同重量,那么最后就没有元素了。针对这两种情况都是堆的元素数量>1,因为最后结果只有1和0嘛,所以循环条件就为堆的元素数量>1。
最后要判断堆到底是1个还是0个元素,通过 三目运算符判断。即 pq.empty()==0 ? pq.top():0

代码:

class Solution {
public:
    int lastStoneWeight(vector<int>& stones) {
        priority_queue<int,vector<int>> pq;
        for(auto& stone:stones){
            pq.push(stone);
        }
        while(pq.size()>1){
            int y=pq.top(); pq.pop();
            int x=pq.top(); pq.pop();
            if(y==x) continue;
            else if(x!=y) pq.push(y-x);
        }
        return (pq.empty()==0? pq.top():0);
    }
};

1046. Last Stone Weight

原文:https://www.cnblogs.com/Mrsdwang/p/14635080.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!