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

93 阅读1分钟

🔗 leetcode.com/problems/ma…

题目

  • 给一个数组 banned,给数字 n,给数字 maxSum

  • 生成一个正整数的数组,要求满足以下条件

    • 取值范围 [1, n]
    • 数组元素不可以相等,且不能出现在 banned 数组中
    • 数组之和不超过 maxSum
  • 返回这个数组的最大长度

思路

  • 模拟,用 set 标记 banned 的元素
  • 从 1 ~ n 遍历选择数字,直到 sum 超过 maxSum

代码

class Solution {
public:
    int maxCount(vector<int>& banned, int n, int maxSum) {
        int ans = 0;
        set<int> s;
        int sum = 0;
        for (auto item : banned) {
            if (item <= n) s.insert(item);
        }

        for (int i = 1; i <= n; i++) {
            if (s.count(i) > 0) continue;
            sum += i;
            if (sum > maxSum) break;
            ans++;
        }
        return ans;
    }
};