算法训练Day41|416. 分割等和子集

背包问题:

LeetCode:416. 分割等和子集

416. 分割等和子集 - 力扣(LeetCode)

1.思路

①确定dp\[\]数组的含义,dpi:表示重量为 i 的背包所能装下的最大价值.

②确定递推公式,倒叙加入.

③初始化,默认为0即可.

④确认遍历顺序,先遍历物品,再遍历背包,背包从大到小遍历.

⑤举例代入,打印dp\[\]数组.

2.代码实现

复制代码
 1class Solution {
 2    public boolean canPartition(int[] nums) {
 3        int sum = 0;
 4        for (int num : nums) {
 5            sum += num;
 6        }
 7        if (sum % 2 != 0) {
 8            return false;
 9        }
10        int target = sum / 2;
11        // target 代表重量和价值 则dp[] 数组要达到target,需要创建数组范围为:[0, target]
12        int[] dp = new int[target + 1];
13        for (int i = 0; i < nums.length; i++) { // 先遍历物品
14            for (int j = target; j >= nums[i]; j--) {
15                // 再遍历背包
16                dp[j] = Math.max(dp[j], dp[j - nums[i]] + nums[i]);
17            }
18        }
19        return dp[target] == target;
20    }
21}

3.复杂度分析

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

空间复杂度:O(n).

相关推荐
weixin_307779138 分钟前
从“人操作仪器”到“Agent 自主发现”:OPL 金属材料自驱动实验室 MVP 技术论述
开发语言·人工智能·算法·架构
释厄62318 分钟前
01AB 基本元理——任何智能体的三元法理·0=1→0≠1法理跃迁为天理
人工智能·windows·算法·microsoft·机器学习
Omics Pro30 分钟前
经典多组学整合算法→商用云平台
数据库·人工智能·算法·机器学习·自然语言处理
ting945200037 分钟前
深度拆解|1752vc Pitch Deck Analyzer 底层技术架构与核心算法原理
人工智能·算法·架构
贾斯汀frank44 分钟前
基于 Java + Playwright 实现网站自动访问与数据采集
算法
早睡早起不秃头&1 小时前
【架构】- 移动机器人系统的插件化:让定位算法独立演进
算法·架构
anew___1 小时前
《从零手写操作系统 (20):ELF加载器——让OS读懂现代编译器》
java·服务器·前端
code2cat1 小时前
【随笔】MCP资源更新订阅:通知到达以后,Agent怎样刷新旧资料
java·后端·开发工具·ai agent·mcp
mmmmath_31 小时前
LeetCode.020.有效的括号
数据结构·算法·leetcode
Doubbbbbbble云2 小时前
算法优化中的数学建模与理论界限分析4
算法·数学建模