[LeetCode] Minimum K to Reduce Array Within Limit

3824. Minimum K to Reduce Array Within Limit

You are given a positive integer array nums.

For a positive integer k, define nonPositive(nums, k) as the minimum number of operations needed to make every element of nums non-positive. In one operation, you can choose an index i and reduce nums[i] by k.

Return an integer denoting the minimum value of k such that nonPositive(nums, k) <= k^2.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Solution {
bool helper(vector<int>& A, long long m) {
long long op = 0;
for(auto& a : A) {
op += (a + m - 1) / m;
}
return op <= m * m;
}
public:
int minimumK(vector<int>& nums) {
int l = 1, r = 1e5, res = r;
while(l <= r) {
int m = l + (r - l) / 2;
bool ok = helper(nums, m);
if(ok) {
res = m;
r = m - 1;
} else l = m + 1;
}
return res;
}
};
Author: Song Hayoung
Link: https://songhayoung.github.io/2026/09/04/PS/LeetCode/minimum-k-to-reduce-array-within-limit/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.