在 Python 中查找显示将所有球移动到当前位置所需的总距离的列表的程序
假设我们有一个名为 nums 的二进制列表,它只包含 0 和 1,其中 0 表示空单元格,1 表示单元格被球填充。我们必须找到一个新的 say L 列表,其大小也与 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]
以上是 在 Python 中查找显示将所有球移动到当前位置所需的总距离的列表的程序 的全部内容, 来源链接: utcz.com/z/349067.html