优选算法_堆_最后一块石头的重量_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();//堆是空就需要返回零
    }
};
相关推荐
Wang's Blog10 小时前
Java框架快速入门:深入MyBatis-Plus高级DML操作(ID策略·逻辑删除·乐观锁)
java·数据库·mybatis
小七在进步10 小时前
数据结构:用栈实现队列
开发语言·数据结构
KaMeidebaby11 小时前
卡梅德生物技术快报|噬菌体筛选:噬菌体筛选工程化优化方案:基于侵染全链条参数调控与水环境应用验证
java·开发语言·人工智能·机器学习·spark
geovindu11 小时前
go: Floyd-Warshall Algorithms
开发语言·后端·算法·golang
CoderYanger11 小时前
视频裁剪+缩放+自动添加水印脚本(Python版)
开发语言·后端·python·程序人生·职场和发展·音视频·学习方法
db_murphy11 小时前
机器学习决策树的基尼系数是个啥?
学习·算法
酷酷的身影11 小时前
Managers/APConfigManager.cs
开发语言·ui·c#
拳里剑气11 小时前
C++算法:优先级队列
开发语言·c++·算法·优先级队列
小七在进步11 小时前
数据结构:用队列实现栈
开发语言·数据结构
Turbo正则11 小时前
机器学习入门笔记 | 基础算法及其应用场景
笔记·算法·机器学习