当前位置: 首页 > news >正文

【C++算法】74.优先级队列_最后一块石头的重量

文章目录

    • 题目链接:
    • 题目描述:
    • 解法
    • C++ 算法代码:


题目链接:

1046. 最后一块石头的重量


题目描述:

a36dc198189ce2de606ad7aa0adcdcc4


解法

每次取出最重的两块石头进行碰撞,将剩余的石头重新放入堆中。


C++ 算法代码:

class Solution 
{
public:int lastStoneWeight(vector<int>& stones) {// 最后一块石头的重量问题// 基本思路:使用大根堆模拟石头碰撞的过程// 1. 创建一个大根堆(优先队列)// C++中priority_queue默认是大根堆,元素按从大到小排序priority_queue<int> heap;// 2. 将所有石头的重量放入堆中// 这样可以自动按重量从大到小排序for(auto x : stones) heap.push(x);// 3. 模拟石头碰撞的过程// 每次取出最重的两块石头进行碰撞while(heap.size() > 1)  // 当堆中至少有两块石头时继续{// 取出最重的石头aint a = heap.top(); heap.pop();// 取出第二重的石头bint b = heap.top(); heap.pop();// 如果a比b重,则a会剩下(a-b)的重量// 将剩余的石头重新放入堆中if(a > b) heap.push(a - b);// 如果a等于b,两块石头都会粉碎,不需要额外操作}// 4. 返回最后的结果// 如果堆不为空,返回最后一块石头的重量// 如果堆为空,说明所有石头都粉碎了,返回0return heap.size() ? heap.top() : 0;}
};
http://www.dtcms.com/a/305234.html

相关文章:

  • 查找特定的值
  • zama test
  • BGP团体属性
  • Linux部署各类软件
  • 《剑指offer》-算法篇-位运算
  • 【深度学习新浪潮】什么是世界模型?
  • 洛谷 P9779 [HUSTFC 2023] 不定项选择题
  • 记一次导出pdf表单引发的问题
  • Linux救援模式之简介篇
  • 文件相关问题(AI回答)
  • 【从0开始学习Java | 第5篇】封装
  • 85、【OS】【Nuttx】【番外】gcc 关键字:位域(上)
  • 影翎Antigravity将发布全球首款全景无人机,8月开启公测招募
  • Leetcode 08 java
  • Linux | 文件权限
  • 面试刷题平台项目总结
  • ERROR c.a.c.n.c.NacosPropertySourceBuilder
  • 对讲机该怎么选?2025建议买的对讲机品牌
  • 并查集介绍及典型应用和编程题
  • 专线与专线之间的区别
  • Docker初学者需要了解的几个知识点(二):Docker、容器镜像
  • 2025年运维相关面试题
  • 前端手写贴
  • 北方公司面试记录
  • A1324LLHLX-T Allegro:高精度线性霍尔效应传感器 ±1%精度+4.5mV/G超高灵敏度
  • python优秀案例:基于机器学习算法的景区旅游评论数据分析与可视化系统,技术使用django+lstm算法+朴素贝叶斯算法+echarts可视化
  • 域名常见问题集(九)——域名市场介绍
  • VNC和RPC加固措施
  • Redis+JWT 认证管理最佳实践
  • MybatisPlus-20.插件功能-通用分页实体与MP转换