3375 使数组的值全部为 K 的最少操作次数

·   ·   ·   ·

  ·   ·


题目链接

3375. 使数组的值全部为 K 的最少操作次数

分析

条件等价于找到有多少个大于 $k$ 的不相同的数

当数组中存在 $x < k$ 时,无解

用 $set$ 记录后求解即可,注意如果数组最小值和 $k$ 相等,最后一次操作无需进行

代码实现

class Solution {
public:
    int minOperations(vector<int>& nums, int k) {
        int min_ele = ranges::min(nums);

        if(k > min_ele)
            return -1;

        unordered_set<int> us(nums.begin(), nums.end());
        return us.size() - (k == min_ele);
    }
};

复杂度分析

  • 时间复杂度:$O(n)$
  • 空间复杂度:$O(n)$