โ† All problems

2554. Maximum Number of Integers to Choose from a Range I

MediumOpen on LeetCodeProblem statement

Problem Statement

2554. Maximum Number of Integers to Choose From a Range I

Medium


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

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

 

Example 1:

Input: banned = [1,6,5], n = 5, maxSum = 6
Output: 2
Explanation: You can choose the integers 2 and 4.
2 and 4 are from the range [1, 5], both did not appear in banned, and their sum is 6, which did not exceed maxSum.

Example 2:

Input: banned = [1,2,3,4,5,6,7], n = 8, maxSum = 1
Output: 0
Explanation: You cannot choose any integer while following the mentioned conditions.

Example 3:

Input: banned = [11], n = 7, maxSum = 50
Output: 7
Explanation: You can choose the integers 1, 2, 3, 4, 5, 6, and 7.
They are from the range [1, 7], all did not appear in banned, and their sum is 28, which did not exceed maxSum.

 

Constraints:

Java โ€” sort

Source file
class Solution {
    public int maxCount(int[] banned, int n, int maxSum) {
        Arrays.sort(banned);
        int b = 0, blen = banned.length, sum = 0, ct = 0;
        for (int i = 1; i <= n && sum <= maxSum; i++) {
            while (b < blen && banned[b] < i)
                b++;
            if (b < blen && banned[b] == i)
                continue;
            sum += i;
            ct++;
        }
        // System.out.println(sum);
        return sum > maxSum ? ct - 1 : ct;
    }
}