Created
December 6, 2024 05:52
-
-
Save igavrysh/f148f4e9f3164946bb34d3f605dce894 to your computer and use it in GitHub Desktop.
2554. Maximum Number of Integers to Choose From a Range I
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
https://leetcode.com/problems/maximum-number-of-integers-to-choose-from-a-range-i/description/?envType=daily-question&envId=2024-12-06 | |
2554. Maximum Number of Integers to Choose From a Range I | |
Solved | |
Medium | |
Topics | |
Companies | |
Hint | |
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. | |
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: | |
1 <= banned.length <= 10^4 | |
1 <= banned[i], n <= 10^4 | |
1 <= maxSum <= 10^9 | |
*/ | |
class Solution { | |
public int maxCount(int[] banned, int n, int maxSum) { | |
int[] banned_a = new int[10001]; | |
for (int i = 0; i < banned.length; i++) { | |
banned_a[banned[i]] = 1; | |
} | |
int total_sum = 0; | |
int q = 0; | |
for (int i = 1; i <= n; i++) { | |
if (banned_a[i] == 1) { | |
continue; | |
} | |
if (total_sum + i <= maxSum) { | |
q++; | |
total_sum += i; | |
} else { | |
break; | |
} | |
} | |
return q; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment