【剑斩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();
    }
};
相关推荐
donoot1 小时前
PaddleOCR + PyMuPDF 生成【全兼容双层 PDF】完整实操指南
人工智能·算法·pymupdf·paddleocr·双层pdf
paeamecium2 小时前
【PAT甲级真题】- Rational Sum (20)
数据结构·c++·python·算法·pat考试·pat
拳里剑气11 小时前
C++算法:BFS解决FloodFill算法
c++·算法·bfs·宽度优先
wanderist.13 小时前
Lambda表达式在算法竞赛中的应用
java·开发语言·算法
稚南城才子,乌衣巷风流13 小时前
支配树(Dominator Tree)详解:概念、算法与应用
算法
稚南城才子,乌衣巷风流14 小时前
动态开点:原理、实现与应用场景
数据结构·算法
yyds_yyd_1008614 小时前
1464. 数组中两元素的最大乘积(2026.07.27)
数据结构·c++·算法·leetcode
KaMeidebaby15 小时前
卡梅德生物技术快报 | 核酸适配体文库测序:核酸适配体文库测序的技术原理、实验流程与数据解析
前端·网络·数据库·人工智能·算法
geovindu15 小时前
CSharp: Breadth First Search Algorithm and Depth First Search Algorithm
开发语言·后端·算法·c#·.net·搜索算法