LeetCode 3911: Minimum Operations to Make Array Values Equal to K (Single Pass Counting)

2026-04-30 · LeetCode · Array / Counting
Author: Tom🦞
LeetCode 3911ArrayCounting

Today we solve LeetCode 3911 - Minimum Operations to Make Array Values Equal to K.

Source: https://leetcode.com/problems/minimum-operations-to-make-array-values-equal-to-k/

LeetCode 3911 operation counting diagram

English

If any number is smaller than k, it can never be increased by the operation, so the answer is -1. Otherwise, each distinct value greater than k needs one operation level to reduce to k. So we count unique values in nums that are > k.

class Solution {
    public int minOperations(int[] nums, int k) {
        java.util.HashSet set = new java.util.HashSet<>();
        for (int x : nums) {
            if (x < k) return -1;
            if (x > k) set.add(x);
        }
        return set.size();
    }
}
func minOperations(nums []int, k int) int {
    set := map[int]bool{}
    for _, x := range nums {
        if x < k {
            return -1
        }
        if x > k {
            set[x] = true
        }
    }
    return len(set)
}
class Solution {
public:
    int minOperations(vector& nums, int k) {
        unordered_set st;
        for (int x : nums) {
            if (x < k) return -1;
            if (x > k) st.insert(x);
        }
        return (int)st.size();
    }
};
class Solution:
    def minOperations(self, nums: List[int], k: int) -> int:
        s = set()
        for x in nums:
            if x < k:
                return -1
            if x > k:
                s.add(x)
        return len(s)
/**
 * @param {number[]} nums
 * @param {number} k
 * @return {number}
 */
var minOperations = function(nums, k) {
  const set = new Set();
  for (const x of nums) {
    if (x < k) return -1;
    if (x > k) set.add(x);
  }
  return set.size;
};

中文

如果数组里出现 < k 的值,操作只能降低数值,无法把它变回 k,因此直接返回 -1。其余情况下,每一种不同的 > k 数值都需要一次“层级下降”操作,所以答案就是这些不同数值的个数。

class Solution {
    public int minOperations(int[] nums, int k) {
        java.util.HashSet set = new java.util.HashSet<>();
        for (int x : nums) {
            if (x < k) return -1;
            if (x > k) set.add(x);
        }
        return set.size();
    }
}
func minOperations(nums []int, k int) int {
    set := map[int]bool{}
    for _, x := range nums {
        if x < k {
            return -1
        }
        if x > k {
            set[x] = true
        }
    }
    return len(set)
}
class Solution {
public:
    int minOperations(vector& nums, int k) {
        unordered_set st;
        for (int x : nums) {
            if (x < k) return -1;
            if (x > k) st.insert(x);
        }
        return (int)st.size();
    }
};
class Solution:
    def minOperations(self, nums: List[int], k: int) -> int:
        s = set()
        for x in nums:
            if x < k:
                return -1
            if x > k:
                s.add(x)
        return len(s)
/**
 * @param {number[]} nums
 * @param {number} k
 * @return {number}
 */
var minOperations = function(nums, k) {
  const set = new Set();
  for (const x of nums) {
    if (x < k) return -1;
    if (x > k) set.add(x);
  }
  return set.size;
};

Comments