Skip to content

Latest commit

 

History

History
116 lines (77 loc) · 2.77 KB

File metadata and controls

116 lines (77 loc) · 2.77 KB

中文文档

Description

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

Solutions

Python3

class Solution:
    def minOperations(self, nums: List[int]) -> int:
        n = len(nums)
        pre_max = nums[0]
        times = 0
        for i in range(1, n):
            if nums[i] <= pre_max:
                steps = pre_max - nums[i] + 1
                times += steps
                pre_max = nums[i] + steps
            else:
                pre_max = nums[i]
        return times

Java

class Solution {
    public int minOperations(int[] nums) {
        int n = nums.length;
        int preMax = nums[0];
        int times = 0;
        for (int i = 1; i < n; ++i) {
            if (nums[i] <= preMax) {
                int steps = preMax - nums[i] + 1;
                times += steps;
                preMax = nums[i] + steps;
            } else {
                preMax = nums[i];
            }
        }
        return times;
    }
}

...