Partition Equal Subset Sum解题报告
来源:互联网 发布:淘宝转换微信链接 编辑:程序博客网 时间:2024/05/01 16:52
题目链接https://leetcode.com/problems/partition-equal-subset-sum/description/
题目描述如下
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.
题目大意是要判断一个正整数数组是否可以分成和相等的两部分
我的想法是:
step1: 判断数组的和(sum)是否是偶数,只有偶数才可分step2: 求出和的一半(n),若n小于数组最大值,则不可分step3: 从数组最后一个数开始,判断包含或不包含当前元素的子集是否求和得n,这里用到递归的算法。
c++代码如下:
class Solution { public: bool canPartition(vector<int>& nums){ int len = nums.size(); int sum = 0; int n = 0; for(int i = 0; i < len; i++){ sum += nums[i]; } if(sum % 2 != 0) { return false; } n = sum / 2; sort(nums.begin(),nums.end()); if(n < nums[len-1]){ return false; } return find(nums, len - 1, n); } bool find(vector<int>& nums, int end, int sum){ if(sum == 0){ return true; } if(sum < 0){ return false; } if(end == 0){ if(sum != nums[0]){ return false; } return true; }else{ return find(nums, end-1, sum - nums[end]) || find(nums, end-1, sum); } }};
复杂度是
阅读全文
0 0
- Partition Equal Subset Sum解题报告
- [leetcode] 416. Partition Equal Subset Sum 解题报告
- [LeetCode] 416. Partition Equal Subset Sum 解题报告
- [Leetcode] 416. Partition Equal Subset Sum 解题报告
- Partition Equal Subset Sum
- Partition Equal Subset Sum
- Partition Equal Subset Sum
- Partition Equal Subset Sum
- Partition Equal Subset Sum
- Partition Equal Subset Sum
- Leetcode 416. Partition Equal Subset Sum 对半分 解题报告【修正版】
- 416. Partition Equal Subset Sum
- 416. Partition Equal Subset Sum
- 416. Partition Equal Subset Sum
- [LeetCode416]Partition Equal Subset Sum
- 416. Partition Equal Subset Sum
- 416. Partition Equal Subset Sum
- 416. Partition Equal Subset Sum
- 大明A+B(大数相加)解题报告
- shiro知识汇总
- Nepire的校OJ入门题解—蓝桥选拔篇(伪最终回)
- 景格虚拟教具混合动力汽车动力系统虚拟结构原理展示台复制狗
- 优先队列---二叉堆
- Partition Equal Subset Sum解题报告
- Java虚拟机基础知识
- arduino学习笔记5 舵机控制
- fresco加载图片 动图
- 如何遍历Map
- Android两大布局:线性布局(LinearLayout) 相对布局(RelativeLayout)
- table-layout: fixed 实现表格列宽可控制
- linux脚本中写环境变量
- google chart 生成svg矢量图