[Leetcode] 416. Partition Equal Subset Sum 解题报告
来源:互联网 发布:hadoop源码有多少 编辑:程序博客网 时间:2024/04/18 19:10
题目:
Given a non-empty array containing only positive integers, find if the array can be partitioned into two subsets such that the sum of elements in both subsets is equal.
Note:
- Each of the array element will not exceed 100.
- The array size will not exceed 200.
Example 1:
Input: [1, 5, 11, 5]Output: trueExplanation: The array can be partitioned as [1, 5, 5] and [11].
Example 2:
Input: [1, 2, 3, 5]Output: falseExplanation: The array cannot be partitioned into equal sum subsets.
思路:
这道题目初始看起来比较难,但是稍微转换一下,就可以变为0-1背包问题,从而可以用动态规划的方法顺利解决。判断数组中的元素是否可以被分成和相等的两个子集,等同于求子集中的元素是否可以构成和为sum / 2的子集。我们定义dp[j]表示数组中的元素是否可以构成和为j的子集,则状态转移方程为dp[j] = {|| dp[j - num]}, for all num in nums。这种定义方式可以将空间复杂度降低到O(sum/2)。时间复杂度是O(n * sum),其中n是数组中元素的个数,sum是数组中元素的和。
代码:
class Solution {public: bool canPartition(vector<int>& nums) { int sum = accumulate(nums.begin(), nums.end(), 0); if(sum % 2 != 0) { return false; } sum /= 2; vector<bool> dp(sum + 1, false); dp[0] = true; for(int i = 0; i < nums.size(); ++i) { for(int j = sum; j >= nums[i]; --j) { dp[j] = dp[j] || dp[j - nums[i]]; } } return dp[sum]; }};
阅读全文
0 0
- [leetcode] 416. Partition Equal Subset Sum 解题报告
- [LeetCode] 416. Partition Equal Subset Sum 解题报告
- [Leetcode] 416. Partition Equal Subset Sum 解题报告
- Partition Equal Subset Sum解题报告
- Leetcode 416. Partition Equal Subset Sum 对半分 解题报告【修正版】
- Leetcode-416. Partition Equal Subset Sum
- LeetCode—416. Partition Equal Subset Sum
- Leetcode 416. Partition Equal Subset Sum
- 【leetcode】416. Partition Equal Subset Sum
- 【LeetCode】416. Partition Equal Subset Sum
- 【LeetCode】416. Partition Equal Subset Sum
- LeetCode 416. Partition Equal Subset Sum
- 【LeetCode】416. Partition Equal Subset Sum
- Leetcode 416. Partition Equal Subset Sum[medium]
- [LeetCode]416. Partition Equal Subset Sum
- 【LeetCode】 416. Partition Equal Subset Sum
- Leetcode 416. Partition Equal Subset Sum
- Leetcode-416. Partition Equal Subset Sum
- NAND驱动分析--(二)
- mysql-----查询及索引知识点
- Java Web开发中前后端分离的技术方案和优缺点
- Test测试方法
- My97DatePicker时间控件使用
- [Leetcode] 416. Partition Equal Subset Sum 解题报告
- windows麦克风输入采集
- window mysql python安装及使用
- dokuwiki:安装与配置
- SpringBoot配置属性之MQ(五)
- QT5提示can not find -lGL的解决方法
- Seevlet Tomcat v7.0 Servletat localhost failed to start 解决办法
- 大型分布式C++框架《二:大包处理过程》
- ActiveMQ(五):多个系统间消息的使用