Maximum AND Sum of Array LeetCode solution in Python
1# Runtime: 1881 ms (Top 9.44%) | Memory: 23.9 MB (Top 80.86%)2from functools import lru_cache, cache345class Solution:6def maximumANDSum(self, nums: List[int], numSlots: int) -> int:7@cache8def dp(i=0, m1=0, m2=0): # mask1, mask29if i == len(nums):10return 011ans = 012for s in range(numSlots):13if m2 & (1 << s) == 0: # i.e. 0b0?, implying the slot is not full14if m1 & (1 << s) == 0: # 0b00 + 1 => 0b0115nm1 = m1 | (1 << s)16nm2 = m217else: # 0b01 + 1 => 0b1018nm1 = m1 & ~(1 << s)19nm2 = m2 | (1 << s)20ans = max(21ans, dp(i + 1, nm1, nm2) + ((s + 1) & nums[i])22) # s + 1 is the actual slot no.23return ans2425return dp()