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

优先级队列(堆)-1046.最后一块砖的重量-力扣(LeetCode)

个人主页:1白天的黑夜1-CSDN博客

专栏:力扣刷题录_1白天的黑夜1的博客-CSDN博客、企鹅程序员:Linux 系统与网络编程_1白天的黑夜1的博客-CSDN博客

目录

一、题目解析

1、选出两块最重的石头意为第一重和第二重或同样重

2、如果只剩一块石头,返回石头的重量;如果没有石头返回0

二、算法原理

解法:优先级队列

解法步骤:

三、代码示例


一、题目解析

1、选出两块最重的石头意为第一重和第二重或同样重

2、如果只剩一块石头,返回石头的重量;如果没有石头返回0

二、算法原理

解法:优先级队列

优先级队列就是堆,而堆又有大根堆和小根堆,本题需要用到的就是大根堆

这里模板参数Compare的缺省值为less,也就是按照从根往下,根比孩子大;而小根堆则是greater,从根往下,根比孩子小

解法步骤:

1、借助priority_queue的迭代器构造,用vector也就是存储石头重量的容器迭代器构造

2、循环碰石头(循环条件为大根堆的大小)

        1、分别定义两个变量用于记录第一重和第二重石头的重量,赋初值为0

        2、判断大根堆中是否还有元素,然后通过top取出石头重量赋值并pop

        3、对于两块石头重量进行判断

                1、相等,由题可知,两块石头粉碎,循环继续

                2、不相等,重的石头减去轻的石头,然后push到大根堆中

        4、退出循环条件判断

                1、由于循环条件为大根堆的个数,所以0个时不会进入循环,无需判断

                2、当只有1个时,会进入循环,重复2的操作,当取出石头后,此时个数为0,但根据3-2的判断逻辑,第二变量未赋值为0,所以此时又被push到大根堆中,如果不做处理会一直重复的,所以在最后判断当第二个变量为0时,代表此时只有一块石头,可以直接返回重量了

3、由于对只有1块石头的情况已处理,所以最后返回0即可

对于top、pop、push和迭代器初始化陌生的读者可以自行查询相关内容

链接:priority_queue - C++ Reference

三、代码示例

class Solution {
public:int lastStoneWeight(vector<int>& stones){priority_queue<int> pqi(stones.begin(),stones.end());while(pqi.size()){int st1 = 0,st2 = 0;if(pqi.size()){st1 = pqi.top();pqi.pop();}if(pqi.size()){st2 = pqi.top();pqi.pop();}if(st1 == st2) continue;else{pqi.push(st1-st2);}if(st2 == 0) return st1;}return 0;}
};

                

看到最后,如果对您有所帮助,还请点赞、收藏和关注一键三连,在未来还会继续带来优秀的内容,感谢观看,我们下期再见!
http://www.dtcms.com/a/420345.html

相关文章:

  • 玩具网站建设方案梅州建网站
  • LLM模型的中间激活值估计
  • 网站做哪些比较赚钱方法网站策划与建设阶段的推广方法
  • 企业品牌网站建设网站背景素材
  • LlamaIndex智能体Agents开发-记忆管理
  • idea学习日记10: 字符串相关类的底层原理
  • 瑞幸咖啡网络营销策划方案沧州百度seo
  • 2025年智慧差旅平台推荐
  • 静态网页模板免费网站富源县住房和城乡建设局网站
  • python建设网站全国网站建设人员数量
  • 海外云服务器数据同步,如何确保全球业务数据一致性
  • iframe通信
  • win8风格手机网站模板如何进外贸大公司网站
  • 个人能为公司网站备案吗微信制作小程序的软件
  • 电商关于信用卡支付小记
  • java-IO流-缓冲流
  • SpringBoot实现简单图形验证码
  • platform设备驱动实验
  • 建最便宜的网站要多少钱wordpress 移动端页码
  • 图论算法刷题的第四十七天
  • 牛客周赛 Round 111(小红的阶梯/小红的数组取数/小红抽卡/小红的好数对/小芳的排列构造小红的排列构造)
  • 东莞网站建设服务湖南网站开发 d岚鸿
  • 计划书网站推广的目录怎么做一级a做爰片啪网站
  • 【剑斩OFFER】优雅的解法——三数之和
  • C++之拷贝构造(浅拷贝与深拷贝)、this指针、内联函数
  • 销售网站开发步骤网站宝二级域名怎么设置
  • 上海浦东建筑建设网站手机端网站制作
  • 【高并发内存池——项目】page cache 回收内存
  • 深圳网站建设便宜信科网络企业网站建设有几种
  • 济南网站建设92jzh知名的设计公司网站