题目地址:
https://leetcode.com/problems/minimum-operations-to-make-the-array-increasing/description/
给定一个长 n n n数组 A A A,允许将任一位置加 1 1 1,问要将其变为严格单调增的数组至少要做多少次操作。
遇到不严格单调增的地方将后面那个数加成前面那个数多 1 1 1即可。代码如下:
class Solution {
public:
int minOperations(vector<int>& a) {
int res = 0;
for (int i = 1; i < a.size(); i++)
if (a[i] <= a[i - 1]) {
res += a[i - 1] + 1 - a[i];
a[i] += a[i - 1] + 1 - a[i];
}
return res;
}
};
时间复杂度 O ( n ) O(n) O(n),空间 O ( 1 ) O(1) O(1)。