class Solution:
def minOperations(self, boxes: str) -> List[int]:
n = len(boxes)
res = [0] * n
for pos in range(n):
for i in range(n):
if boxes[i] == '1':
res[pos] += abs(pos - i)
return resclass Solution:
def minOperations(self, boxes: str) -> List[int]:
n = len(boxes)
res = [0] * n
prefix_count = [0] * (n + 1)
index_sum = [0] * (n + 1)
for i in range(n):
prefix_count[i + 1] = prefix_count[i] + (boxes[i] == '1')
index_sum[i + 1] = index_sum[i] + (i if boxes[i] == '1' else 0)
for i in range(n):
left = prefix_count[i]
left_sum = index_sum[i]
right = prefix_count[n] - prefix_count[i + 1]
right_sum = index_sum[n] - index_sum[i + 1]
res[i] = (i * left - left_sum) + (right_sum - i * right)
return resclass Solution:
def minOperations(self, boxes: str) -> List[int]:
n = len(boxes)
res = [0] * n
balls = moves = 0
for i in range(n):
res[i] = balls + moves
moves += balls
balls += int(boxes[i])
balls = moves = 0
for i in range(n - 1, -1, -1):
res[i] += balls + moves
moves += balls
balls += int(boxes[i])
return res