这篇文章主要讲解了“python怎么分割等和子集”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python怎么分割等和子集”吧!
题目: 分割等和子集
给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。
注意:
每个数组中的元素不会超过 100
数组的大小不会超过 200
示例 1:
输入: [1, 5, 11, 5]
输出: true
解释: 数组可以分割成 [1, 5, 5] 和 [11].
示例 2:
输入: [1, 2, 3, 5]
输出: false
解释: 数组不能分割成两个元素和相等的子集.
解题:
dp问题。将数组切分为等和子集,即是求任意个元素的和等于数组和的一半。使用dp数组,第i个元素表示任意个元素的和能否等于i。那么在任意一个dp[i-n](n为nums中任意元素)为True的情况下,dp[i] 为True。
代码
class Solution:
def canPartition(self, nums: List[int]) -> bool:
target = sum(nums)
if target % 2 == 1:
return False
nums.sort()
target = target // 2
dp = [False] * (target + 1)
dp[0] = True
for i, n in enumerate(nums):
for j in range(target, n - 1, -1):
if dp[j - n] == True:
dp[j] = True
print(dp)
return dp[-1]
感谢各位的阅读,以上就是“python怎么分割等和子集”的内容了,经过本文的学习后,相信大家对python怎么分割等和子集这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。