优选算法_堆_最后一块石头的重量_C++

一.题目解析

每次拿两个最大的值,相等就消掉,不相等就将abs(x-y)放回数组里面

算法解析:堆->大根堆

每次我们都需要找两个最大的值,我们可以使用大根堆来快速找到最大值

二.代码编写:

cpp 复制代码
class Solution {
public:
    int lastStoneWeight(vector<int>& stones) {
        priority_queue<int>heap;//大根堆
        for(auto x:stones)heap.push(x);

        while(heap.size()>1)
        {
            int x=heap.top();heap.pop();
            int y=heap.top();heap.pop();
            if(x>y)heap.push(x-y);//相等会碎掉,不放回
        }
        return heap.empty()?0:heap.top();//堆是空就需要返回零
    }
};
相关推荐
阿正的梦工坊3 小时前
JavaScript 微任务与宏任务完全指南
开发语言·javascript·ecmascript
chools3 小时前
【AI超级智能体】快速搞懂工具调用Tool Calling 和 MCP协议
java·人工智能·学习·ai
知行合一。。。3 小时前
Python--05--面向对象(属性,方法)
android·开发语言·python
李白你好3 小时前
TongWeb EJB 反序列化生成工具(Java-Chain 插件)
java·安全
自信150413057593 小时前
重生之从0开始学习c++之模板初级
c++·学习
leobertlan3 小时前
好玩系列:用20元实现快乐保存器
android·人工智能·算法
青梅橘子皮3 小时前
C语言---指针的应用以及一些面试题
c语言·开发语言·算法
浅时光_c4 小时前
3 shell脚本编程
linux·开发语言·bash
历程里程碑4 小时前
2. Git版本回退全攻略:轻松掌握代码时光机
大数据·c++·git·elasticsearch·搜索引擎·github·全文检索
极客智造4 小时前
深度解析 C++ 类继承与多态:面向对象编程的核心
c++