题目链接
分析
条件等价于找到有多少个大于 $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)$