用 Python 编写程序,查找空座位和已占用座位之间的最大距离
pythonserver side programmingprogramming更新于 2025/12/24 13:32:17
假设我们有一个仅包含 0 和 1 的列表,称为座位。其中 seat[i] 代表一个座位。当它是 1 时,则表示有人坐,否则表示空闲。至少有一个空座位和至少一个被占用的座位,我们必须找到从空座位到最近的被占用座位的最大距离。
因此,如果输入为座位 = [1, 0, 1, 0, 0, 0, 1],则输出将为 2,因为我们可以占用座位 seat[4],则距离为 2。
为了解决这个问题,我们将遵循以下步骤 −
res := 0
last := -1
n := 座位数
对于范围为 0 到 n - 1 的 i,执行
如果 seat[i] 为 1,则
res := res 和 (i 如果 last < 0 否则取 (i-last)/2 的下限) 的最大值
last := i
返回 res 和 (n-last-1) 的最大值
示例
让我们看看下面的实现以便更好地理解
def solve(seats):
res, last, n = 0, -1, len(seats)
for i in range(n):
if seats[i]:
res = max(res, i if last < 0 else (i - last) // 2)
last = i
return max(res, n - last - 1)
seats = [1, 0, 1, 0, 0, 0, 1]
print(solve(seats))
输入
[1, 0, 1, 0, 0, 0, 1]
输出
2
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

