2020/10/11的每日一题
两种方法: 1. DP 2. DFS
416. 分割等和子集
给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。
注意:
- 每个数组中的元素不会超过 100
- 数组的大小不会超过 200
示例 1:
1
2
3
4
5
6 > 输入: [1, 5, 11, 5]
>
> 输出: true
>
> 解释: 数组可以分割成 [1, 5, 5] 和 [11].
>
示例 2:
1
2
3
4
5
6 > 输入: [1, 2, 3, 5]
>
> 输出: false
>
> 解释: 数组不能分割成两个元素和相等的子集.
>
方法1 DP
思路:准确来说是一道0-1背包问题,从nums中挑选(0, nums.size())个数,并且背包的大小为sum/2。
具体的思路会在代码中解释。
1 | class Solution { |
方法2 DFS
因为是从一个集合中挑选(0, nums.size())个数组组成一个target自然而然可以想到用暴力的dfs.
提示 :可能LeetCode变更了数据集,导致现在的dfs方法过不了。
1 | class Solution { |