有一堆石头,每块石头的重量都是正整数。

每一回合,从中选出两块 最重的 石头,然后将它们一起粉碎。假设石头的重量分别为 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 最后一块石头 推排序相关推荐

  1. 力扣1046 - 最后一块石头的重量

    目录 1.题目-> 题目解读-> 该题需要注意的细节-> 2.更容易理解的代码(建议新手) 代码-> 核心思想-> 3.更简洁的代码(使用Queue队列) 代码-> ...

  2. 力扣1046-最后一块石头的重量(原汁原味利用排序,自己写的100% Java题解)

    力扣1046-最后一块石头的重量 一.原题题目 1.1 题目   有一堆石头,每块石头的重量都是正整数.每一回合,从中选出两块最重的石头,然后将它们一起粉碎.假设石头的重量分别为 x 和 y,且 x ...

  3. 力扣题解-1046. 最后一块石头的重量

    题目:1046. 最后一块石头的重量 有一堆石头,每块石头的重量都是正整数. 每一回合,从中选出两块 最重的 石头,然后将它们一起粉碎.假设石头的重量分别为 x 和 y,且 x <= y.那么粉 ...

  4. 1046. 最后一块石头的重量

    链接:1046. 最后一块石头的重量 题解: class Solution {public:int lastStoneWeight(vector<int>& stones) {st ...

  5. leetcode 1046 最后一块石头的重量

    1046. 最后一块石头的重量 难度简单98收藏分享切换为英文接收动态反馈 有一堆石头,每块石头的重量都是正整数. 每一回合,从中选出两块 最重的 石头,然后将它们一起粉碎.假设石头的重量分别为 x  ...

  6. 力扣 leetcode 1046. 最后一块石头的重量 (python)

    Topic: 有一堆石头,每块石头的重量都是正整数. 每一回合,从中选出两块 最重的 石头,然后将它们一起粉碎.假设石头的重量分别为 x 和 y,且 x <= y.那么粉碎的可能结果如下: 如果 ...

  7. LeetCode 1046. 最后一块石头的重量(priority_queue 堆)

    1. 题目 有一堆石头,每块石头的重量都是正整数. 每一回合,从中选出两块最重的石头,然后将它们一起粉碎.假设石头的重量分别为 x 和 y,且 x <= y.那么粉碎的可能结果如下: 如果 x ...

  8. C++算法学习(力扣:1122. 数组的相对排序)

    给你两个数组,arr1 和 arr2, arr2 中的元素各不相同 arr2 中的每个元素都出现在 arr1 中 对 arr1 中的元素进行排序,使 arr1 中项的相对顺序和 arr2 中的相对顺序 ...

  9. 力扣354——俄罗斯套娃信封问题(排序+动态规划)

    思路 首先排序,后面一定不会存在比当前信封更大的信封. 对于严格大于,是具有传递性的,如果信封a比信封b大,则a比(所有b大于的信封)大,因此可以利用传递性进行动态规划. dp代表该信封能装下的最大数 ...

最新文章

  1. java 中的单元测试_浅谈Java 中的单元测试
  2. 一道暴力枚举题Win32版本示例
  3. PCL点云库学习(1):环境配置(Ubuntu16.04+QT5+VTK8.0)
  4. 中国大学mooc慕课python答案_中国大学MOOC(慕课)Python编程基础题目答案
  5. Vista共享文件夹无法访问?
  6. netty 粘包的解决策略
  7. c/c++整理--c++面向对象(5)
  8. python中的timeit模块的用法
  9. css 滚动条样式_那些你总是记不住但又总是要用的css
  10. 脚本方式添加全文索引
  11. Eclipse中SVN上传项目
  12. xp系统怎么更改计算机用户名和密码,xp系统怎么取消开机密码?
  13. ssm+jsp计算机毕业设计郑财学生经验分享平台的设计与实现hsk3u(程序+lw+源码+远程部署)
  14. 你会使用Excel中的【照相机】吗?
  15. 离散数学知识点总结(2)-谓词逻辑
  16. STL之自定义缓冲区
  17. 分享一款超级好用的Windows清理软件
  18. 牛奶可乐经济学之Q14:为什么参加相亲不靠谱?
  19. 低速 CAN 总线偶尔无法正常通信,该如何诊断?
  20. 02、【solidworks】solidworks下载重装可能遇到的问题尤其是注册表访问问题

热门文章

  1. 用Python写个开心消消乐小游戏
  2. em4305reader_EM4305和4205中文数据手册
  3. java 公平锁和非公平锁区别
  4. MySQL Binlog 介绍
  5. 元气森林从0糖起家,在0蔗糖跌倒
  6. 2007 可乐广告游戏项目简介(有下载地址)
  7. mysql数据库学生成绩管理系统
  8. php class 构造_PHP 类与构造函数
  9. 普罗米修斯 监控_普罗米修斯监控实例
  10. Prometheus普罗米修斯监控+Alertmanager预警+钉钉预警