1769.移动所有球到每个盒子所需的最小操作数(javascript)1769.MinimumNumberofOperationstoMoveAllBallstoEachBox

原创
小哥 3年前 (2022-12-19) 阅读数 6 #大杂烩

有 n 一个盒子。给你一个长度 n 二进制字符串 boxes ,其中 boxes[i] 的值为 ‘0’ 表示第 i 个盒子是 空 的,而 boxes[i] 的值为 ‘1’ 指示该框具有 一个 小球。

在一个步骤中,您可以 一个 球从一个盒子移动到相邻的盒子。部分 i 箱子和编号。 j 相邻的箱子需要满足 abs(i - j) == 1 。请注意,在执行操作后,某些箱子中可能有不止一个球。

返回长度 n 的数组 answer ,其中 answer[i] 就是把所有球移到第一个 i 需要一个盒子。 最小 操作数。

每个 answer[i] 全部根据盒子 初始状态 进行计算。

示例 1:

输入:boxes = "110"
输出:[1,1,3]
说明:每个框对应的最小操作数如下:
1) 第 1 方框:从第一个位置移动一个小球 2 箱子移动到编号。 1 需要一个盒子。 1 步操作。
2) 第 2 方框:从第一个位置移动一个小球 1 箱子移动到编号。 2 需要一个盒子。 1 步操作。
3) 第 3 方框:从第一个位置移动一个小球 1 箱子移动到编号。 3 需要一个盒子。 2 步骤操作。第一个小球 2 箱子移动到编号。 3 需要一个盒子。 1 步骤操作。全部的 3 步操作。

示例 2:

输入:boxes = "001011"
输出:[11,8,5,4,3,4]

提示:

  • n == boxes.length
  • 1 <= n <= 2000
  • boxes[i] 为 ‘0’ 或 ‘1’

解题过程

var minOperations = function (boxes) {
    const len = boxes.length
    const list =[]
    for (let i = 0; i < len; i++) {
        let sum = 0
        for (let j = 0; j < len; j++) {
            if (boxes[j] == 1) {
               sum+= Math.abs(j - i)
            }
        }
        list.push(sum)
    }
    return list
};

leetcode: https://leetcode.cn/problems/minimum-number-of-operations-to-move-all-balls-to-each-box/

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除