题目
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: true
Explanation: The array can be partitioned as [1, 5, 5] and [11].
Example 2:
Input: [1, 2, 3, 5]
Output: false
Explanation: The array cannot be partitioned into equal sum subsets.
解析:
这道题目解的方法主要有两种,第一种利用DFS,第二种利用DP,这边只提供了非常简单的dp方法,关于更快的方法还理解的不到位,留到后面二刷再来补充
解法1:DFS(TLE)
class Solution(object):
def canPartition(self, nums):
"""
:type nums: List[int]
:rtype: bool
"""
def backtracking(target):
for num in nums:
if target>=num:
target -= num
nums.remove(num)
if target == 0 or target