本篇博客会讲解力扣“1827. 最少操作使数组递增”的解题思路,这是题目链接。
从前往后遍历数组,从下标为1的元素(第二个元素)开始,若该元素不超过前一个元素,则把该元素改成前一个元素加1后的值。把每个元素(修改后的值-修改前的值)求和就是结果。
int minOperations(int* nums, int numsSize){
int ret = 0;
for (int i = 1; i < numsSize; ++i)
{
if (nums[i] <= nums[i-1])
{
// 使数组的后一个元素刚好比前一个元素多1
ret += nums[i-1] + 1 - nums[i];
nums[i] = nums[i-1] + 1;
}
}
return ret;
}
总结
按照题目描述,把每个数都改成比前一个数大的数就行了。
感谢大家的阅读!