leetcode_1046. 最后一块石头的重量
目录
一、题目内容
二、解题思路
三、代码
一、题目内容
有一堆石头,每块石头的重量都是正整数。
每一回合,从中选出两块 最重的 石头,然后将它们一起粉碎。假设石头的重量分别为 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],这就是最后剩下那块石头的重量。
提示:
1 <= stones.length <= 30
1 <= stones[i] <= 1000
二、解题思路
递归,每次排序后取出最后两个比较,相等则继续递归,否则添加二者的差值进stones,再递归;
三、代码
class Solution:def lastStoneWeight(self, stones: list) -> int:n = len(stones)if n == 1:return stones[0]elif n == 0:return 0stones.sort()stone1, stone2 = stones[-2], stones[-1]stones.remove(stone1)stones.remove(stone2)if stone1 == stone2:return self.lastStoneWeight(stones)else:stones.append(stone2 - stone1)return self.lastStoneWeight(stones)if __name__ == '__main__':stones = [2, 7, 4, 1, 8, 1]# stones = [2, 2]s = Solution()ans = s.lastStoneWeight(stones)print(ans)
leetcode_1046. 最后一块石头的重量相关推荐
- LeetCode-动态规划背包题-1049. 最后一块石头的重量 II
描述 1049. 最后一块石头的重量 II 有一堆石头,用整数数组 stones 表示.其中 stones[i] 表示第 i 块石头的重量. 每一回合,从中选出任意两块石头,然后将它们一起粉碎.假设石 ...
- LeetCode 1049. 最后一块石头的重量 II
1049. 最后一块石头的重量 II 无论按照何种顺序粉碎石头,最后一块石头的重量总是可以表示成 可以这样理解,将所有的石头分为两堆,ki=1的石头是一堆,ki=-1的石头是另一堆,我们的目标就是求上 ...
- LeetCode 1049. 最后一块石头的重量 II(DP)
1. 题目 有一堆石头,每块石头的重量都是正整数. 每一回合,从中选出任意两块石头,然后将它们一起粉碎. 假设石头的重量分别为 x 和 y,且 x <= y.那么粉碎的可能结果如下: 如果 x ...
- LeetCode 1046. 最后一块石头的重量(priority_queue 堆)
1. 题目 有一堆石头,每块石头的重量都是正整数. 每一回合,从中选出两块最重的石头,然后将它们一起粉碎.假设石头的重量分别为 x 和 y,且 x <= y.那么粉碎的可能结果如下: 如果 x ...
- 1046. 最后一块石头的重量
链接:1046. 最后一块石头的重量 题解: class Solution {public:int lastStoneWeight(vector<int>& stones) {st ...
- 力扣1046-最后一块石头的重量(原汁原味利用排序,自己写的100% Java题解)
力扣1046-最后一块石头的重量 一.原题题目 1.1 题目 有一堆石头,每块石头的重量都是正整数.每一回合,从中选出两块最重的石头,然后将它们一起粉碎.假设石头的重量分别为 x 和 y,且 x ...
- 【5.31 代随_43day】 最后一块石头的重量 II、目标和、一和零
最后一块石头的重量 II.目标和.一和零 最后一块石头的重量 II 1.方法 图解步骤![在这里插入图片描述](https://img-blog.csdnimg.cn/d2266317bc43491f ...
- 2022-2-19 Leetcode 1049.最后一块石头的重量II
例二分析:26+21-40 = 7 33-31 = 2 7-2 = 5 相当于小块石头集合之后一起去砸大石头. 这道题和最后一块石头的重量I 有什么不同? 例子更复杂了.(虽然不知道复杂在哪里) 这道 ...
- [Leet code 最后一块石头的重量]
1046. 最后一块石头的重量 难度简单239收藏分享切换为英文接收动态反馈 有一堆石头,每块石头的重量都是正整数. 每一回合,从中选出两块 最重的 石头,然后将它们一起粉碎.假设石头的重量分别为 x ...
最新文章
- 拼音怎么写_老师:不会写的字用圈代替,看到孩子试卷,网友:人才
- python学习--第三天 粗略介绍人脸识别
- Quartus中常见错误·
- 高效能人士的七个习惯_《高效能人士的七个习惯》导图和读后感
- 一个技术开发者经常访问的网站
- mysql 5.7.10免安装_免安装版mysql5.7.10-16配置教程(2)
- Java基础之IO流
- DevEco Studio 切换黑色界面(两步搞定)
- 基于Spring Boot 的Blog开发
- udp聊天室的界面实现
- springboot - 应用实践(N)使用springboot内置的@Scheduled
- PMP_第4章章节试题
- java学习-狼人杀
- ecshop 二次开发
- opencv读取视频转换成一张张图片
- 数值分析常用的几个小程序C++实现
- 2018年北京信息科技大学第十届程序设计竞赛暨ACM选拔赛 C:计算几何
- [精彩泄漏截图] 2006最值得期待的游戏
- 邮箱不可用 550 User has no permission(JavaMail登不进邮件系统)
- 主成分回归预测matlab,科学网—Matlab: princomp() 主成分分析 - 杨建功的博文
热门文章
- java计算机毕业设计web扶贫产品物资管理平台源码+数据库+系统+lw文档
- Week 2互评作业:用“埃氏筛法”求2~100以内的素数。2~100以内的数,先去掉2的倍数,再去掉3的倍数,再去掉5的倍数,……依此类推,最后剩下的就是素数。
- c++ 内存映射文件进程间共享数据
- 一班洽谈框架细化_理解层次:框架细化篇(以供参悟)
- 开始记录自己的学习过程和目标
- 详解缓存穿透、缓存雪崩、缓存击穿
- 嵌入式Qt-简易网络监控摄像头
- 摩托车爱好者头盔的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- 采购合同的效力,了解一下
- 放射科信息服务器瘫痪,【身边故事】清明假日,CT突发故障“罢工”“休假”!放射科紧急动员加班加点确保患者检查需求!...