博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
力扣 5063 最后一块石头的重量 & II
阅读量:4468 次
发布时间:2019-06-08

本文共 1032 字,大约阅读时间需要 3 分钟。

思路:每次循环,sort将这堆石头从大到小排序,拿出最重的两块石头粉碎,若粉碎后的值不为0,则存入stones中,再做sort从大到小排序,直到stones的size<2为止。

class Solution {public:    int lastStoneWeight(vector
& stones) { int s = 0; sort(stones.begin(), stones.end(), greater
()); while(stones.size()>=2){ s = stones[0] - stones[1]; stones.erase(stones.begin(), stones.begin()+2); if(s != 0){ stones.push_back(s); sort(stones.begin(), stones.end(), greater
()); } } return stones.empty()? 0 : stones[0]; }};

 

思路:相当于把这堆石头分为两堆,让其中一堆的值尽可能的接近于输入总和的一半。

动态规划:维护一个dp[i][j] :行表示索引为i时对应的这块石头,最大的重量为j时,得到的当前堆的重量。

class Solution {public:    int lastStoneWeightII(vector
& stones) { int size = stones.size(); if(size==0) return 0; else if(size==1) return size; int sum = 0; for(int i=0; i

 

转载于:https://www.cnblogs.com/Bella2017/p/10904723.html

你可能感兴趣的文章
P2664 树上游戏
查看>>
jQuery 停止动画
查看>>
Sharepoint Solution Gallery Active Solution时激活按钮灰色不可用的解决方法
查看>>
教你50招提升ASP.NET性能(二十二):利用.NET 4.5异步结构
查看>>
lua连续随机数
查看>>
checkstyle使用介绍
查看>>
会了这十种Python优雅的写法,让你工作效率翻十倍,一人顶十人用!
查看>>
二维码图片生成
查看>>
在做操作系统实验的一些疑问
查看>>
Log4J日志配置详解
查看>>
NameNode 与 SecondaryNameNode 的工作机制
查看>>
Code obfuscation
查看>>
大厂资深面试官 带你破解Android高级面试
查看>>
node.js系列(实例):原生node.js实现接收前台post请求提交数据
查看>>
SignalR主动通知订阅者示例
查看>>
用python实现矩阵转置
查看>>
linux 小技巧(磁盘空间搜索)
查看>>
iOS开发——捕获崩溃信息
查看>>
(for 循环)编程找出四位整数 abcd 中满足 (ab+cd)(ab+cd)=abcd 的数
查看>>
tomcat使用spring-loaded实现应用热部署
查看>>