416.M 分割等和子集
思路
Code
func canPartition(nums []int) bool {
if len(nums) < 2 {
return false
}
sum := 0
for _, num := range nums {
sum += num
}
if sum%2 != 0 {
return false
}
target := sum / 2
dp := make([]bool, target+1)
dp[0] = true
for i := 1; i < len(nums); i++ {
for j := target; j >= nums[i]; j-- {
dp[j] = dp[j] || dp[j-nums[i]]
}
}
return dp[target]
}Last updated