BitSet
题目:https://leetcode-cn.com/problems/partition-equal-subset-sum/submissions/
分割等和子集
class Solution: def canPartition(self, nums): flag = 1 # 初始化 sumnums = 0 for i in nums: sumnums += i # 记录和 flag = flag | flag << i # 记录所有可能的结果 if sumnums % 2 == 0: # 和为偶数才有解 sumnums //= 2 else: return False target = 1 << sumnums # 目标和 if target & flag != 0: # 目标位置上不为0 return True else: return False
利用: flag = flag | flag << i 记录所有的可能的结果
最后是一个非常非常长的01 bit串,比如第10位是1 ,代表了10这个数字的存在。