LeetCode 3911: Minimum Operations to Make Array Values Equal to K (Single Pass Counting)
LeetCode 3911ArrayCountingToday 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/
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