LeetCode 1046. 最后一块石头的重量 (贪心)
2024-10-08 07:37:59
有一堆石头,每块石头的重量都是正整数。
每一回合,从中选出两块最重的石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。那么粉碎的可能结果如下:
如果 x == y,那么两块石头都会被完全粉碎;
如果 x != y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头新重量为 y-x。
最后,最多只会剩下一块石头。返回此石头的重量。如果没有石头剩下,就返回 0。
提示:
1 <= stones.length <= 30
1 <= stones[i] <= 1000
贪心
int lastStoneWeight(int* stones, int stonesSize){
if(stonesSize==) return stones[];
while(){
int maxvalue=stones[stonesSize-];
int maxi=stonesSize-;
for(int i=stonesSize-;i>=;i--){
if(stones[i]>maxvalue){
maxvalue=stones[i];
maxi=i;
}
}
int t=stones[stonesSize-];
stones[stonesSize-]=stones[maxi];
stones[maxi]=t;
maxvalue=stones[];
maxi=;
for(int i=;i<stonesSize-;i++){
if(stones[i]>maxvalue){
maxvalue=stones[i];
maxi=i;
}
}
t=stones[stonesSize-];
stones[stonesSize-]=stones[maxi];
stones[maxi]=t;
if(stones[stonesSize-]==stones[stonesSize-]){
stones[stonesSize-]=;
}else if(stones[stonesSize-]>stones[stonesSize-]){
stones[stonesSize-]-=stones[stonesSize-];
}else{
stones[stonesSize-]=stones[stonesSize-]-stones[stonesSize-];
}
stonesSize--;
if(stonesSize==) break;
}
return stones[];
}
最新文章
- Vue - 实例
- ASP.NET Core AD 域登录
- SharePoint 门户添加内网域名
- 160918、BigDecimal运算
- 从客户端中检测到有潜在危险的 Request.Form 值
- Table of Contents - Jersey
- ConcurrentDictionary<;TKey, TValue>;的AddOrUpdate方法
- Servlet的getContextPath(), getServletPath(), getRequestURI(), getRealPath(";/";)
- c语言学习之基础知识点介绍(十五):函数的指针
- 如何为图片添加热点链接?(map + area)
- OO第一次总结
- Naive RNN vs LSTM vs GRU
- C# 当中 foreach 的原理
- 要想成为前端大神,那些你不得不知晓的web前端命名规范。
- Linux命令:read
- app自动化测试中的相关api
- Python fcntl 与 signal 模块使用
- Linux下使用vim命令编辑与修改文本内容
- C++中的关键字用法--- 四种强制类型转换的总结
- 关于NLPIR应用在KETTLE中的探索
热门文章
- centos6.x下使用xinetd管理rsync服务
- mitmproxy--Cannot establish TLS with client (sni: e.crashlytics.com): TlsException(";(-1, &#39;Unexpected EOF&#39;)";,) 解决办法
- ASP .NET CORE 源码地址
- SSM项目下Druid连接池的配置及数据源监控的使用
- 机器学习算法——kNN
- clr via c# 接口
- SDI011 读卡器发送非APDU指令
- MATLAB应用专题part2-电力电子仿真技术
- MySQL 8 备份与恢复
- C#中的异步编程--探索await与async关键字的奥妙之处,原来理解和使用异步编程可以这么简单