408算法题leetcode--第37天

news/2024/10/19 17:14:27/

1049. 最后一块石头的重量 II

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

题解思路:01背包

时间复杂度:O(n*m)

空间复杂度:O(m)

代码:

class Solution {
public:int lastStoneWeightII(vector<int>& stones) {// 01背包,容量和价值一样,即目标是最大化使用容量// 如[abcd],抵消后可以为a+b+c-d,也可以是a+b-c-d,即一堆和-另一堆和的最小值// 第一堆 = sum - dp[sum/2],第二堆 = dp[sum / 2]// 接下来开始dp,转化为找dp[]的最大值// dp[]: 容量为j的背包的最大值// 转移:dp[j] = max(dp[j], dp[j - stones[i]] + stones[i])// 初始化:dp[i] = 0// 顺序:先种类,后重量vector<int>dp(15001, 0);int sum = 0;for(auto i : stones) sum += i;int target = sum / 2;int size = stones.size();for(int i = 0; i < size; i++){for(int j = target; j >= stones[i]; j--){dp[j] = max(dp[j], dp[j - stones[i]] + stones[i]);}}return sum - dp[target] - dp[target];}
};

416. 分割等和子集

题目地址:416. 分割等和子集 - 力扣(LeetCode)

题解思路:dp,01背包

时间复杂度:O(n^2)

空间复杂度:O(n)

代码:

class Solution {
public:bool canPartition(vector<int>& nums) {// 01背包,容量和价值一样,即目标是最大化使用容量// dp[]:容量为j的背包的最大价值// dp[i] = i,只要dp[sum / 2] = sum / 2就返回true// 初始化:dp[0] = 0// 顺序:种类,容量vector<int>dp(10001, 0);  // 200 * 100 / 2int sum = 0;for(auto i : nums) sum += i;int size = nums.size();for(int i = 0; i < size; i++){for(int j = sum / 2; j >= nums[i]; j--){dp[j] = max(dp[j], dp[j - nums[i]] + nums[i]);}}return dp[sum / 2] * 2 == sum;  // 可以前面提前判断,如果sum为奇数,返回false}
};

http://www.ppmy.cn/news/1540297.html

相关文章

Chromium 中window.DOMParser接口说明c++

一、DOMParser DOMParser 可以将存储在字符串中的 XML 或 HTML 源代码解析为一个 DOM Document。 备注&#xff1a; XMLHttpRequest 支持从 URL 可寻址资源解析 XML 和 HTML&#xff0c;在其response 属性中返回Document。 你可以使用XMLSerializer 接口执行相反的操作 - 将…

QT的文件操作类 QFile

QFile 是 Qt 框架中用于文件处理的一个类。它提供了读取和写入文件的功能&#xff0c;支持文本和二进制文 件。 QFile 继承自 QIODevice &#xff0c;因此它可以像其他IO设备一样使用。 主要功能 文件读写&#xff1a; QFile 支持打开文件进行读取或写入操作文件信息&#x…

Android Studio开发Kotlin项目中遇到的问题解决集

背景&#xff1a;Android Studio 2022.3.1 1.Unexpected tokens (use ; to separate expressions on the same line) 无法在同一行声明一个变量并实例化。 解决&#xff1a;分开 &#xff08;1&#xff09; var aaCo:Runoob<String>aaCoRunoob("aa") &…

Linux驱动开发——platform平台总线

bus_type 一、主要作用 设备管理 bus_type负责管理连接在特定总线上的设备。它维护一个设备链表&#xff0c;其中包含了所有注册到该总线上的设备。通过这个链表&#xff0c;内核可以方便地遍历和管理连接在该总线上的设备。例如&#xff0c;对于 PCI 总线&#xff0c;bus_typ…

掌握Go语言`runtime`包:性能优化与实战指南

掌握Go语言runtime包&#xff1a;性能优化与实战指南 引言第一部分&#xff1a;初识runtime包runtime包概述runtime包的核心功能 第二部分&#xff1a;常用功能详解Goroutine管理runtime.Goexitruntime.Goschedruntime.NumGoroutine 内存管理runtime.MemStatsruntime.GC 系统信…

10 django管理系统 - 管理员管理 - 新建管理员(通过模态框和ajax实现)

在文章“04 django管理系统 - 部门管理 - 新增部门”中&#xff0c;我们通过传统的新增页面来实现部门的添加。 在本文中&#xff0c;我们通过模态框和ajax来实现管理员的新增。 首先在admin_list.html中新建入口&#xff0c;使用按钮 <div class"panel-heading&quo…

UDP——Socket

UDP——Socket只是与本地的ip和端口号相捆绑——不与对方ip和端口捆绑 发送包括&#xff08;我的Socket值发的内容对方ip和端口&#xff09; 然后任何一个守候在UDP端口的节点收&#xff08;对方发的内容对方端节点&#xff09; UDP和IP都是数据报发送

1.Springboot之ApplicationContextListenerConfig

Springboot框架中提供了两种类型的应用上下文ApplicationContext&#xff0c;分别为&#xff1a; AnnotationConfigServletWebServerApplicationContext。AnnotationConfigReactiveWebServerApplicationContext。 public class SpringApplication {public SpringApplication(…