Input: nums =[1,1,1]Output: 3Explanation: 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**_].
To make the array strictly increasing, whenever nums[i] is not greater than nums[i-1], we must increment nums[i] enough to make it one more than nums[i-1]. The minimum number of operations is the sum of all such increments.
classSolution {
publicintminOperations(int[] nums) {
int ans = 0;
for (int i = 1; i < nums.length; i++) {
if (nums[i]<= nums[i-1]) {
ans += nums[i-1]- nums[i]+ 1;
nums[i]= nums[i-1]+ 1;
}
}
return ans;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
classSolution {
funminOperations(nums: IntArray): Int {
var ans = 0for (i in1 until nums.size) {
if (nums[i] <= nums[i-1]) {
ans += nums[i-1] - nums[i] + 1 nums[i] = nums[i-1] + 1 }
}
return ans
}
}
1
2
3
4
5
6
7
8
classSolution:
defminOperations(self, nums: list[int]) -> int:
ans =0for i in range(1, len(nums)):
if nums[i] <= nums[i-1]:
ans += nums[i-1] - nums[i] +1 nums[i] = nums[i-1] +1return ans
1
2
3
4
5
6
7
8
9
10
11
12
13
impl Solution {
pubfnmin_operations(nums: Vec<i32>) -> i32 {
letmut nums = nums;
letmut ans =0;
for i in1..nums.len() {
if nums[i] <= nums[i-1] {
ans += nums[i-1] - nums[i] +1;
nums[i] = nums[i-1] +1;
}
}
ans
}
}