力扣1046 最后一块石头 推排序
有一堆石头,每块石头的重量都是正整数。
每一回合,从中选出两块 最重的 石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。那么粉碎的可能结果如下:
如果 x == y,那么两块石头都会被完全粉碎;
如果 x != y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头新重量为 y-x。
最后,最多只会剩下一块石头。返回此石头的重量。如果没有石头剩下,就返回 0。
输入:[2,7,4,1,8,1] 输出:1
class Solution {public int lastStoneWeight(int[] stones) {// 建立一个大根堆。PriorityQueue<Integer> priorityQueue = new PriorityQueue<>((o1, o2) -> (o2 - o1));for (int i = 0; i < stones.length; i++) {priorityQueue.offer(stones[i]);}// 从中选出两块 最重的 石头while( priorityQueue.size() > 1 ) {int y = priorityQueue.poll();int x = priorityQueue.poll();// 新的石头重量写入 大顶堆int diff = y - x;// 如果相等,则俩块石头都摧毁,不计入大顶堆中if ( diff != 0 ) priorityQueue.offer(diff);}// priorityQueue空 return 0if ( priorityQueue.size() == 0 ) return 0;return priorityQueue.peek();}
}
力扣1046 最后一块石头 推排序相关推荐
- 力扣1046 - 最后一块石头的重量
目录 1.题目-> 题目解读-> 该题需要注意的细节-> 2.更容易理解的代码(建议新手) 代码-> 核心思想-> 3.更简洁的代码(使用Queue队列) 代码-> ...
- 力扣1046-最后一块石头的重量(原汁原味利用排序,自己写的100% Java题解)
力扣1046-最后一块石头的重量 一.原题题目 1.1 题目 有一堆石头,每块石头的重量都是正整数.每一回合,从中选出两块最重的石头,然后将它们一起粉碎.假设石头的重量分别为 x 和 y,且 x ...
- 力扣题解-1046. 最后一块石头的重量
题目:1046. 最后一块石头的重量 有一堆石头,每块石头的重量都是正整数. 每一回合,从中选出两块 最重的 石头,然后将它们一起粉碎.假设石头的重量分别为 x 和 y,且 x <= y.那么粉 ...
- 1046. 最后一块石头的重量
链接:1046. 最后一块石头的重量 题解: class Solution {public:int lastStoneWeight(vector<int>& stones) {st ...
- leetcode 1046 最后一块石头的重量
1046. 最后一块石头的重量 难度简单98收藏分享切换为英文接收动态反馈 有一堆石头,每块石头的重量都是正整数. 每一回合,从中选出两块 最重的 石头,然后将它们一起粉碎.假设石头的重量分别为 x ...
- 力扣 leetcode 1046. 最后一块石头的重量 (python)
Topic: 有一堆石头,每块石头的重量都是正整数. 每一回合,从中选出两块 最重的 石头,然后将它们一起粉碎.假设石头的重量分别为 x 和 y,且 x <= y.那么粉碎的可能结果如下: 如果 ...
- LeetCode 1046. 最后一块石头的重量(priority_queue 堆)
1. 题目 有一堆石头,每块石头的重量都是正整数. 每一回合,从中选出两块最重的石头,然后将它们一起粉碎.假设石头的重量分别为 x 和 y,且 x <= y.那么粉碎的可能结果如下: 如果 x ...
- C++算法学习(力扣:1122. 数组的相对排序)
给你两个数组,arr1 和 arr2, arr2 中的元素各不相同 arr2 中的每个元素都出现在 arr1 中 对 arr1 中的元素进行排序,使 arr1 中项的相对顺序和 arr2 中的相对顺序 ...
- 力扣354——俄罗斯套娃信封问题(排序+动态规划)
思路 首先排序,后面一定不会存在比当前信封更大的信封. 对于严格大于,是具有传递性的,如果信封a比信封b大,则a比(所有b大于的信封)大,因此可以利用传递性进行动态规划. dp代表该信封能装下的最大数 ...
最新文章
- java 中的单元测试_浅谈Java 中的单元测试
- 一道暴力枚举题Win32版本示例
- PCL点云库学习(1):环境配置(Ubuntu16.04+QT5+VTK8.0)
- 中国大学mooc慕课python答案_中国大学MOOC(慕课)Python编程基础题目答案
- Vista共享文件夹无法访问?
- netty 粘包的解决策略
- c/c++整理--c++面向对象(5)
- python中的timeit模块的用法
- css 滚动条样式_那些你总是记不住但又总是要用的css
- 脚本方式添加全文索引
- Eclipse中SVN上传项目
- xp系统怎么更改计算机用户名和密码,xp系统怎么取消开机密码?
- ssm+jsp计算机毕业设计郑财学生经验分享平台的设计与实现hsk3u(程序+lw+源码+远程部署)
- 你会使用Excel中的【照相机】吗?
- 离散数学知识点总结(2)-谓词逻辑
- STL之自定义缓冲区
- 分享一款超级好用的Windows清理软件
- 牛奶可乐经济学之Q14:为什么参加相亲不靠谱?
- 低速 CAN 总线偶尔无法正常通信,该如何诊断?
- 02、【solidworks】solidworks下载重装可能遇到的问题尤其是注册表访问问题