Maximum AND Sum of Array LeetCode solution in JavaScript
1/**2* @param {number[]} nums3* @param {number} numSlots4* @return {number}5*/6var maximumANDSum = function (nums, numSlots) {7let memo = [],8mask = 0;9let ans = dp(0, 0);10return ans;1112function dp(i, mask) {13let max = 0,14sum;15if (memo[mask] !== undefined) {16return memo[mask];17}18if (i === nums.length) {19return 0;20}21for (let s = 1, maskBit = 1; s <= numSlots; s++, maskBit *= 3) {22if (Math.floor(mask / maskBit) % 3 < 2) {23sum = (nums[i] & s) + dp(i + 1, mask + maskBit);24max = Math.max(sum, max);25}26}27memo[mask] = max;28return memo[mask];29}30};