Delete and Earn LeetCode solution in JavaScript
1var deleteAndEarn = function (nums) {2let maxNumber = 0;34const cache = {};5const points = {};67function maxPoints(num) {8if (num === 0) {9return 0;10}1112if (num === 1) {13return points[1] || 0;14}1516if (cache[num] !== undefined) {17return cache[num];18}1920const gain = points[num] || 0;21return (cache[num] = Math.max(22maxPoints(num - 1),23maxPoints(num - 2) + gain24));25}2627for (let num of nums) {28points[num] = (points[num] || 0) + num;29maxNumber = Math.max(maxNumber, num);30}3132return maxPoints(maxNumber);33};