1 minute read

You are given an integer array nums (0-indexed). In one operation, you can choose an element of the array and increment it by 1.

For example, if nums = [1,2,3], you can choose to increment nums[1] to make nums = [1,3,3]. Return the minimum number of operations needed to make nums strictly increasing.

An array nums is strictly increasing if nums[i] < nums[i+1] for all 0 <= i < nums.length - 1. An array of length 1 is trivially strictly increasing.

Example 1:

Input: nums = [1,1,1] Output: 3 Explanation: You can do the following operations:

  1. Increment nums[2], so nums becomes [1,1,2].
  2. Increment nums[1], so nums becomes [1,2,2].
  3. Increment nums[2], so nums becomes [1,2,3]. Example 2:

Input: nums = [1,5,2,4,1] Output: 14 Example 3:

Input: nums = [8] Output: 0

Constraints:

1 <= nums.length <= 5000 1 <= nums[i] <= 104

/**
 * @param {number[]} nums
 * @return {number}
 */
var minOperations = function (nums) {
  // Initialize a variable 'result' to 0 to store the total count of adjustments made
  let result = 0;

  // Loop through the elements of the 'nums' array
  for (let i = 0; i < nums.length; i++) {
    // Check if the current element is greater than or equal to the next element in the array
    if (nums[i] >= nums[i + 1]) {
      // Calculate the difference needed to make the next element greater than the current one
      let diff = nums[i] + 1 - nums[i + 1];

      // Increment the next element by the calculated difference
      nums[i + 1] += diff;

      // Accumulate the difference to the 'result' variable
      result += diff;
    }
  }

  // Return the total count of adjustments made
  return result;
};

The time complexity of the code is O(n), where n is the length of the nums array. The loop iterates through each element of the array once, and the operations inside the loop are constant time. Therefore, the overall time complexity is linear with respect to the length of the input array.

The space complexity is O(1), constant space. The algorithm uses a constant amount of space regardless of the size of the input array. The only variables used are result and diff, and their space requirements do not depend on the size of the input. The algorithm modifies the input array in place without using additional data structures, contributing to the constant space complexity.

Leave a comment