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 { |