Topic:

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

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

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

Example:

输入:[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],这就是最后剩下那块石头的重量。

Solution:

首先对stones进行排序
将最大的两块石头进行对比
若重量不一样则进行大减小且弹出两块石头,同时将减去后的值重新加入序列
若重量一样则弹出两块石头
重复如上过程直到:
若最后仅剩一块是石头最后将石头的重量返回
若最后无石头返回0

Code:

class Solution:def lastStoneWeight(self, stones: List[int]) -> int:stones.sort()while True:if len(stones) == 1:return stones[0]if len(stones) == 0:return 0if stones[-2] == stones[-1]:stones.pop()stones.pop()stones.sort()elif stones[-1] >= stones[-2]:a = stones.pop()b = stones.pop()stones.append(a - b)stones.sort()

Result:

力扣 leetcode 1046. 最后一块石头的重量 (python)相关推荐

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

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

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

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

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

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

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

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

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

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

  6. 2022-2-19 Leetcode 1046.最后一块石头的重量

    测试程序,觉得蛮对的.没有想明白错在哪里... #include<iostream> #include<vector> #include<string> #incl ...

  7. LeetCode 1049. 最后一块石头的重量 II(DP)

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

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

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

  9. 2022-2-19 Leetcode 1049.最后一块石头的重量II

    例二分析:26+21-40 = 7 33-31 = 2 7-2 = 5 相当于小块石头集合之后一起去砸大石头. 这道题和最后一块石头的重量I 有什么不同? 例子更复杂了.(虽然不知道复杂在哪里) 这道 ...

最新文章

  1. Python统计网站访问日志log中的IP信息,并排序。。
  2. Spring Cloud【Finchley】-05使用配置文件自定义Ribbon Client
  3. angular 模板
  4. 如何打开php页面跳转_php如何跳转页面
  5. web api接口开发实例_C# 物联网开发API接口系列(4)
  6. [BZOJ1260][CQOI2007]涂色paint 区间dp
  7. linux循环处理脚本命令,后端开发必须掌握的Linux命令[Shell脚本篇]
  8. php sqlite教程,在thinkPHP中使用sqlite的教程
  9. Python——调用shell命令的三种方法
  10. 软件开发的一些感想(五年工作总结版)
  11. 批量图片压缩、生成PDF文件及PDF文件压缩
  12. 推荐系统本质与网易严选实践
  13. 计算机调节音量找不到,电脑右下角的小喇叭不见了?教你这样操作,轻松调节音量!...
  14. 百度地图定位API+和风天气城市搜索API构成的天气定位模块
  15. 心形一行python_《心》字意思读音、组词解释及笔画数 - 新华字典 - 911查询
  16. RFM模型—零售数据实战
  17. SHOI 2002 百事世界杯之旅 题解
  18. python夯实基础日记-类详解
  19. Flink流批一体化处理框架
  20. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java青岛恒星科技学院机房管理系统0k0u9

热门文章

  1. 阿里p7程序员:生活压力大,有房贷不敢离职,离职股票就没了
  2. MODIS NDVI下载处理 MOD13A1, win10
  3. bzoj 1984: 月下“毛景树” 线段树+树链剖分
  4. 一个屌丝程序猿的人生(二十三)
  5. 进制转换(10转8 2)
  6. 多智能体仿真环境NetLogo介绍之导入外部数据
  7. 指针、结构体、枚举类和文件
  8. java object数组转list_java 如何将ListObject[]转换成List实体?
  9. 科罗拉多大学波尔得分校计算机科学,CU Boulder的Computer Science「科罗拉多大学波德分校计算机科学系」...
  10. C语言(CED)智力大冲浪——贪心算法第一题