1526. Minimum Number of Increments on Subarrays to Form a Target Array

Leetcode link

题目简介

/**
 * @param {number[]} target
 * @return {number}
 */

题目在一开始给我们一个长度为 target.length 的全 0 数组,要求我们每次选择其中的一个子数组给子数组每个元素 +1,使其最后变成 target 数组

题目要求我们返回最少的选择步骤需要多少步

解题思路

这题乍看是一道 hard,其实要比想像中简单

我们从数组的第一个元素开始看:

  1. 要将 0 变成 target[0] 需要 target[0]
  2. 如果 target[1]target[0] 小(或相等),我们可以把 target[1]target[0] 划分到同一个子数组中,在这种情况下将 0 变成 target[1] 也只需要 target[0]
  3. 反之如果 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
};

results matching ""

    No results matching ""