当前位置: 首页 > news >正文

LeetCode1049:最后一块石头的重量

题目链接:1049. 最后一块石头的重量 II - 力扣(LeetCode)

代码如下

class Solution {
public:int lastStoneWeightII(vector<int>& stones) {int sum = 0;vector<int> dp(1501,0);for(int i = 0; i < stones.size(); i++){sum += stones[i];}int target = sum / 2;for(int i = 0; i < stones.size(); i++){for(int j = target; j >= stones[i]; j--){dp[j] = max(dp[j], dp[j - stones[i]] + stones[i]);}}int result = sum - 2*dp[target];return result;}
};

这个题目的关键思想就是需要把这些石头能够以相差最小的值分成两堆,也就是说,分成两堆的石头每一堆的重量加起来再相减的和最小即可

这个题目没得说,也就是把所有的石头加起来,sum除以2,得到的值,作为背包的容量大小即可

这个题目要知道最后返回的值是有些考究的,返回是sum - 2*dp[target];,为什么呢,因为dp[target]是向下取整并且dp[target]是最小堆的石头,所以另一堆石头的重量就是sum-dp[target],两个石头堆相减,也就是最后的结果sum - 2*dp[target]


http://www.mrgr.cn/news/44935.html

相关文章:

  • IDEA搭建JDK1.8源码调试环境
  • Android架构--MVVM
  • Linux操作系统——概念扫盲I
  • Django学习笔记十四:系统框架总结
  • 分治算法(4)_快速选择_库存管理III_面试题
  • [运维]5.镜像本地存在但仍然从网络拉取的问题
  • 【Linux】自主shell编写
  • Nginx06-静态资源部署
  • 链表排序
  • 大语言模型(LLM)综述
  • 代码随想录--栈与队列--用栈实现队列
  • 【重学 MySQL】六十、空间类型
  • 永洪BI:企业数字化转型的得力助手
  • 等保测评的转型,对于提升我国网络空间的安全防护水平具有重要意义
  • TryHackMe 第7天 | Web Fundamentals (二)
  • Leecode刷题之路第12天之整数转罗马数字
  • 《重生到现代之从零开始的数据结构生活》—— 复杂度
  • Ollama接口系统详解
  • Mysql(六) --- 聚合函数,分组和联合查询
  • C++ 多线程