Problem Description
Explanation
To solve this problem, we need to iterate through the array and for each element, we check if it is less than or equal to the previous element. If it is, we increment the current element to make it strictly increasing. The number of operations needed is the difference between the current element and the previous element plus 1. We keep track of the total operations needed and update the previous element for the next iteration.
Algorithm:
- Initialize a variable
prev
to store the previous element. - Initialize a variable
operations
to store the total operations needed. - Iterate through the array starting from index 1.
- For each element, if it is less than or equal to the previous element, increment it to make it strictly increasing. Add the difference between the updated element and the previous element to
operations
. - Update
prev
to the updated element. - Return the total
operations
needed.
Time Complexity: The time complexity of this algorithm is O(n) where n is the number of elements in the input array.
Space Complexity: The space complexity is O(1) as we are using only a constant amount of extra space.
Solutions
class Solution {
public int minOperations(int[] nums) {
int operations = 0;
int prev = nums[0];
for (int i = 1; i < nums.length; i++) {
if (nums[i] <= prev) {
operations += prev - nums[i] + 1;
prev++;
} else {
prev = nums[i];
}
}
return operations;
}
}
Loading editor...