Python程序检查所有人是否能找到座位

Python程序检查所有人是否能找到座位

我们假设有一个数字n,有n个人正在寻找座位,我们还有一个比特列表,其中1表示已经占用了座位,0表示空座位。两个人不能坐在一起,所以我们必须检查所有n个人是否能找到座位。

因此,如果输入如下:n = 2,seats = [1, 0, 0, 0, 1, 0, 0],则输出将为True,因为他们可以在索引2和6处坐下。

要解决此问题,我们将按照以下步骤进行操作 −

  • 在座位列表的开头插入0,在座位列表的末尾插入[0,1]
  • res := 0,gap := 0
  • 对于座位列表中的每个i,执行以下操作
    • 如果i与0相同,则
      • gap := gap + 1
    • 否则当gap > 0时,则
      • res := res + (gap – 1) // 2的整数商
      • gap := 0
  • 当res >= n时返回true否则返回false

示例

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

def solve(n, seats):
    seats = [0] + seats + [0, 1]
    res = 0
    gap = 0
    for i in seats:
        if i == 0:
            gap += 1
        elif gap > 0:
            res += (gap - 1) // 2
            gap = 0
    return res >= n

n = 2
seats = [1, 0, 0, 0, 1, 0, 0]
print(solve(n, seats))

输入

2,[1,0,0,0,1,0,0]

输出

True

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程