优选算法_堆_最后一块石头的重量_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();//堆是空就需要返回零
    }
};
相关推荐
benbenAItalk4 小时前
数字人口播视频的批量生产实践:素材规范、任务编排与质量验收
java·前端·音视频
sunshine22 girl4 小时前
Java学习二 基本语法2, 算术运算符
java·学习
2601_962218614 小时前
万象生鲜系统业财一体化底层打通技术自动生成经营账单
大数据·数据库·人工智能·python·算法
2601_966949654 小时前
为什么量化策略需要大量历史股票数据?从回测可信度理解数据规模
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
niucloud-admin4 小时前
JAVA V6 多商户商城 开发文档——插件目录结构
java·开发语言
2601_962885724 小时前
如何用 Python 扫描 A 股跳空缺口并统计缺口回补概率?
java·前端·python
anew___4 小时前
蜂鸣器播放音乐——让 Arduino 唱出旋律
c++·stm32·单片机·嵌入式硬件·c
吞下星星的少年·-·4 小时前
The 2026 ICPC Asia East Continent Online Contest (II)(构造)
数据结构·算法
滕州市燕猫虎计算机科技工作室个体工商户4 小时前
Java锁
java·开发语言
多加点辣也没关系5 小时前
JavaScript|第31章:表单与控件
开发语言·javascript·ecmascript