【剑斩OFFER】算法的暴力美学——力扣 1046 题:最后一块石头的重量


一、题目描述

二、算法原理

思路:大根堆

把所有的数据入堆,然后依次拿取堆顶元素,判断这个两个元素是否相等,不相等,大的值减去小的值入堆;当堆只有一个元素或者没有数据时,就结束循环,最终如果这个堆有数据那么这个数据就是最终答案,否则返回 0

三、代码实现

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

        while(!maxpq.empty() && maxpq.size() != 1)
        {
            int x = maxpq.top();//获取堆顶元素
            maxpq.pop();//出堆
            int y = maxpq.top();
            maxpq.pop();
            if(x != y) maxpq.push(x - y);//入堆
        }

        if(maxpq.empty()) return 0;
        return maxpq.top();
    }
};
相关推荐
EdmundXjs6 小时前
大模型核心概念解读
人工智能·算法
lookaroundd6 小时前
llm-compressor 普通量化调用链分析
python·算法
中小企业实战军师刘孙亮6 小时前
家居建材营销新趋势:数字化、体验式与可持续方向-佛山鼎策创局破局增长咨询有限公司
职场和发展·产品运营·创业创新·需求分析·学习方法
小羊在睡觉6 小时前
力扣239. 滑动窗口最大值
数据结构·后端·算法·leetcode·go
兰令水6 小时前
topcode【随机算法题】【2026.5.20打卡-java版本】
java·开发语言·算法
此生决int6 小时前
算法从入门到精通——前缀和
c++·算法·蓝桥杯
凯瑟琳.奥古斯特7 小时前
传输层核心功能解析
开发语言·网络·职场和发展
大大杰哥7 小时前
leetcode hot100(4)矩阵
算法·leetcode·矩阵
小白|7 小时前
cmake:昇腾CANN构建系统完全指南
java·c++·算法
nebula-AI7 小时前
人工智能导论:模型与算法(未来发展与趋势)
人工智能·神经网络·算法·机器学习·量子计算·automl·类脑计算