Problems Solved:
- #3065 Minimum Operations to Exceed Threshold Value I
- #283 Move Zeroes
This continues my daily series (Day 17: Count-Below-Threshold + Inβplace Zero Push). Today I focused on two array problems: counting how many elements are below a threshold when we repeatedly remove the global minimum, and moving all zeros to the end while preserving order.
π‘ What I Learned
- For Minimum Operations to Exceed Threshold Value I, the operation βremove one occurrence of the smallest elementβ implies we must eliminate every value
< kexactly once. Thus, after sorting, the answer is simply the count of values< k. (Sorting is optional; we can also count directly.) - For Move Zeroes, implementing it by erasing zeros in place and pushing them to the back preserves order but causes O(nΒ²) behavior due to repeated middle erases on a vector/array. It still solves the problem correctly and demonstrates inβplace stability, but is not optimal versus the twoβpointer linear approach.
- Both tasks highlight how problem constraints map to simple invariants: removeβmin step β all
< kmust go; stable inβplace reordering β zeros migrate without disturbing nonβzero relative order.
π§© #3065 β Minimum Operations to Exceed Threshold Value I
C++ (Sort + Count Below k)
class Solution {
public:
int minOperations(vector<int>& nums, int k) {
sort(nums.begin(), nums.end());
int i = 0;
while (i < nums.size() && nums[i] < k){
i += 1;
}
return i;
}
};
Python (Sort + Count Below k)
class Solution:
def minOperations(self, nums: List[int], k: int) -> int:
nums.sort()
i = 0
while i < len(nums) and nums[i] < k:
i += 1
return i
Why it works: each operation always removes the current global minimum. As long as any element < k remains, that minimum is < k and must be removed once. Therefore, the minimal number of operations equals the number of elements < k.
Time: O(n log n) due to sort (a countingβonly variant can be O(n)).
Space: O(1) extra (inβplace sort).
π§© #283 β Move Zeroes
C++ (Inβplace erase + push_back)
class Solution {
public:
void moveZeroes(vector<int>& nums) {
int start= 0, end = nums.size()-1;
while (start < end){
if (nums[start] == 0){
nums.push_back(nums[start]);
nums.erase(nums.begin() + start);
end--;
}else{
start++;
}
}
}
};
Python (Inβplace pop/append)
class Solution:
def moveZeroes(self, nums: List[int]) -> None:
"""
Do not return anything, modify nums in-place instead.
"""
start = 0
end = len(nums)-1
while start < end:
if nums[start] == 0:
nums.append(nums[start])
nums.pop(start)
end -= 1
else:
start += 1
Why it works: whenever a zero is found, it is relocated to the end. Elements already processed keep their relative order, so stability is preserved.
Time: worstβcase O(nΒ²) (due to middle erases/pops).
Space: O(1) extra.
Note: A twoβpointer O(n) alternative writes nonβzeros forward then fills trailing zeros. I kept the implementations above consistent with todayβs code to reflect the approach I used.
πΈ Achievements
- Implemented thresholdβremoval counting cleanly in both Python and C++.
- Demonstrated an inβplace, stable zeroβmover using erase/pop mechanics.
π¦ Complexity Recap
-
Minimum Operations to Exceed Threshold Value I:
O(n log n)time (with sort),O(1)extra space. -
Move Zeroes:
O(nΒ²)time with erase/pop,O(1)extra space. (Twoβpointer variant would beO(n).)
π£ Join the Journey
Iβm solving and documenting problems daily in both Python and C++, covering arrays, linked lists, dynamic programming, and more. Follow along if youβre interested in systematic problem solving.
Links
- LinkedIn: https://www.linkedin.com/in/ertugrul-mutlu
- GitHub Series: https://github.com/Ertugrulmutlu/leetcode-series




Top comments (0)