Back to all solutions

#2554 - Maximum Number of Integers to Choose From a Range I

Problem Description

You are given an integer array banned and two integers n and maxSum. You are choosing some number of integers following the below rules:

  • The chosen integers have to be in the range [1, n].
  • Each integer can be chosen at most once.
  • The chosen integers should not be in the array banned.
  • The sum of the chosen integers should not exceed maxSum.

Return the maximum number of integers you can choose following the mentioned rules.

Solution

/**
 * @param {number[]} banned
 * @param {number} n
 * @param {number} maxSum
 * @return {number}
 */
var maxCount = function(banned, n, maxSum) {
  const set = new Set(banned);
  let result = 0;
  let currentSum = 0;

  for (let num = 1; num <= n; num++) {
    if (!set.has(num) && currentSum + num <= maxSum) {
      result++;
      currentSum += num;
    }
  }

  return result;
};