跳到主要内容

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

链接:1769.移动所有球到每个盒子所需的最小操作数
难度:Medium
标签:数组、字符串
简介:返回一个长度为 n 的数组 answer ,其中 answer[i] 是将所有小球移动到第 i 个盒子所需的 最小 操作数。

题解 1 - cpp

  • 编辑时间:2022-12-02
  • 执行用时:76ms
  • 内存消耗:8.6MB
  • 编程语言:cpp
  • 解法介绍:先统计右侧所有的点和数量,每次移动时快速计算左侧 1 数量和右侧 1 数量。
class Solution {
public:
vector<int> minOperations(string boxes) {
int n = boxes.size(),
lsum = 0, lcnt = 0,
rsum = 0, rcnt = 0;
vector<int> list(n);
for (int i = 0; i < n; i++) {
if (boxes[i] == '1') {
rsum += i;
rcnt += 1;
}
}
list[0] = rsum;
for (int i = 1; i < n; i++) {
if (boxes[i - 1] == '1') rcnt--, lcnt++;
rsum -= rcnt;
lsum += lcnt;
list[i] = lsum + rsum;
}
return list;
}
};