1526. Minimum Number of Increments on Subarrays to Form a Target Array
题目简介
/**
* @param {number[]} target
* @return {number}
*/
题目在一开始给我们一个长度为 target.length 的全 0 数组,要求我们每次选择其中的一个子数组给子数组每个元素 +1,使其最后变成 target 数组
题目要求我们返回最少的选择步骤需要多少步
解题思路
这题乍看是一道 hard,其实要比想像中简单
我们从数组的第一个元素开始看:
- 要将 0 变成
target[0]需要target[0]步 - 如果
target[1]比target[0]小(或相等),我们可以把target[1]跟target[0]划分到同一个子数组中,在这种情况下将 0 变成target[1]也只需要target[0]步 - 反之如果
target[1]比target[0]大,则我们还需要target[1] - target[0]步才能将 0 也变成target[1]
结合上面三点,我们只需要一次遍历就可以搞定
Javascript
/**
* @param {number[]} target
* @return {number}
*/
var minNumberOperations = function (target) {
let res = target[0]
for (let i = 1; i < target.length; i++) {
if(target[i] > target[i - 1]) {
res += target[i] - target[i - 1]
}
}
return res
};