首页 文章资讯内容详情

在 Python 中查找显示将所有球移动到当前位置所需的总距离的列表的程序

2026-06-03 1 花语

假设我们有一个名为nums的二进制列表,它只包含0和1,其中0表示空单元格,1表示单元格被球填充。我们必须找到一个新的sayL列表,其大小也与nums大小相同,其中L[i]设置为将所有球移动到L[i]所需的总距离。这里将球从索引j移动到索引i的距离是|j-i|。

因此,如果输入类似于nums=[1,1,0,1],那么输出将是[4,3,4,5],因为

L[0]=|0-0|+|1-0|+|3-0|

L[1]=|0-1|+|1-1|+|3-1|

L[2]=|0-2|+|1-2|+|3-2|

L[3]=|0-3|+|1-3|+|3-3|

因此,要将所有球移动到L[1],我们必须将球从索引0移动到1,距离为1,并将球从索引3移动到1,距离为2。

示例

让我们看看以下实现以获得更好的理解-

def solve(nums): if not nums: return [] left_count = right_count = 0 left_sum = right_sum = 0 result = [] for index, num in enumerate(nums): if num: right_count += 1 right_sum += index for index, num in enumerate(nums): result.append(left_sum + right_sum) if num: right_count -= 1 left_count += 1 left_sum += left_count right_sum -= right_count return result nums = [1, 1, 0, 1] print(solve(nums))

输入

[1, 1, 0, 1]输出结果[4, 3, 4, 5]