题目描述

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

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

如果 x == y,那么两块石头都会被完全粉碎;
如果 x != y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头新重量为 y-x。
最后,最多只会剩下一块石头。返回此石头的重量。如果没有石头剩下,就返回 0。

示例

输入:[2,7,4,1,8,1]
输出:1
解释:
先选出 7 和 8,得到 1,所以数组转换为 [2,4,1,1,1],
再选出 2 和 4,得到 2,所以数组转换为 [2,1,1,1],
接着是 2 和 1,得到 1,所以数组转换为 [1,1,1],
最后选出 1 和 1,得到 0,最终数组转换为 [1],这就是最后剩下那块石头的重量。

源代码

class Solution {public:int lastStoneWeight(vector<int>& stones) {while(stones.size()>=2){sort(stones.begin(),stones.end());int n=stones.size();if(stones[n-1]==stones[n-2]){stones.pop_back();stones.pop_back();}else{stones[n-2]=stones[n-1]-stones[n-2];stones.pop_back();}}if(stones.size()==1) return stones[0];return 0;}
};

复杂度分析:

  • 时间复杂度:O(nlogn),其中 n 是石头数量。每次从队列中取出元素需要花费 O(logn) 的时间,最多共需要粉碎 n−1 次石头。

  • 空间复杂度:O(1)

力扣-1046 最后一块石头的重量相关推荐

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

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

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

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

  3. 力扣1046 最后一块石头 推排序

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

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

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

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

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

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

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

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

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

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

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

  9. leetcode 1046. 最后一块石头的重量(堆)

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

  10. LeetCode[1046]最后一块石头的重量

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

最新文章

  1. java jdk1.8环境变量的配置
  2. 计算机网络 实验六 静态路由配置,《计算机网络》实六 静态路由配置 实验报告.doc...
  3. Call指令和Ret指令讲解
  4. 【工具篇】抓包中的王牌工具—Fiddler (1-环境搭建)
  5. redis3.2.3安装部署实战
  6. 【译】Facebook 开源 Detectron
  7. PHP 使用程序进行数据库字典文件生成 导出数据库字典
  8. [Codeforces702F]T-Shirts——非旋转treap+贪心
  9. 垃圾回收策略和算法,看这篇就够了
  10. ajax redirectattributes 使用,Spring中RedirectAttributes对象重定向传参
  11. 解决MySQL Workbench导出低版本MySQL时报错Unknown table ‘column_statistics’ in information_schema的问题
  12. Window操作系统安全配置
  13. 集团企业网站群建设发展趋势
  14. dango shell 操作crud
  15. 网速特别好但是访问网页特别慢
  16. 【大数据处理技术】实验3
  17. sql20005 分页存储过程
  18. VS2008 ActiveX(ocx控件)的调试工具ActiveX Control Test Container安装说明
  19. icloud android 日历同步到iphone,Mac的日历事件如何同步到iphone?
  20. 用耳机浏览器无声音的解决方法

热门文章

  1. Java 设计模式 之 访问者模式
  2. [渗透测试] DOS攻击
  3. 转载 :sql server 2005 无法删除数据库 #Test,因为该数据库当前正在使用
  4. 在类库中使用Session
  5. 纯PHP实现定时器任务(Timer)
  6. 【linux】图解Linux最常用命令!秒懂!
  7. 【北大知识图谱】知识图谱的关键技术及其智能应用
  8. 【资源】PyTorch版《动手学深度学习》开源了,最美DL书遇上最赞DL框架
  9. 你是否有过疑问:为啥损失函数很多用的都是交叉熵(cross entropy)?
  10. [NAACL19]基于DIORA的无监督隐式句法树归纳