Maximum AND Sum of Array LeetCode solution in JavaScript

1
/**
2
* @param {number[]} nums
3
* @param {number} numSlots
4
* @return {number}
5
*/
6
var maximumANDSum = function (nums, numSlots) {
7
let memo = [],
8
mask = 0;
9
let ans = dp(0, 0);
10
return ans;
11

12
function dp(i, mask) {
13
let max = 0,
14
sum;
15
if (memo[mask] !== undefined) {
16
return memo[mask];
17
}
18
if (i === nums.length) {
19
return 0;
20
}
21
for (let s = 1, maskBit = 1; s <= numSlots; s++, maskBit *= 3) {
22
if (Math.floor(mask / maskBit) % 3 < 2) {
23
sum = (nums[i] & s) + dp(i + 1, mask + maskBit);
24
max = Math.max(sum, max);
25
}
26
}
27
memo[mask] = max;
28
return memo[mask];
29
}
30
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0