优选算法_堆_最后一块石头的重量_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();//堆是空就需要返回零
    }
};
相关推荐
磊 子7 分钟前
STL无序关联容器—unorded_set+unorded_map
开发语言·c++
向量引擎11 分钟前
从零起步,如何打造专属向量引擎 API 中转工作流?
java·服务器·前端
LJianK112 分钟前
普通接口,用到getter和setter方法的地方,jackson转换
java
通信小呆呆13 分钟前
Vandermonde结构及其快速算法详解
线性代数·算法
辰海Coding15 分钟前
MiniSpring框架学习-分解 Dispatcher
java·学习·spring·架构
初夏睡觉16 分钟前
数据结构学习之~二叉堆 (P3378 【模版】堆)
数据结构·c++·学习
AI人工智能+电脑小能手19 分钟前
【大白话说Java面试题 第84题】【Mysql篇】第14题:为什么用 InnoDB 存储引擎的表建议用整型的自增主键?
java·开发语言·数据库·mysql·面试
小江的记录本26 分钟前
【JVM虚拟机】JVM调优:常用JVM参数、调优核心指标、OOM排查、GC日志分析、Arthas工具使用(附《思维导图》+《面试高频考点清单》)
java·jvm·spring boot·后端·python·spring·面试
金銀銅鐵39 分钟前
[Java] 用图形化界面演示 iadd, isub, iconst_<i> 指令的效果
java·后端·python