OD C卷 - 体育场找座位

体育场找座位 (100)

  • 体育场有一排座位(已有落座观众),观众之间必须至少一个空位才允许落座;
  • 在不移动现有观众座位的情况下,最多还能坐下多少人?

输入描述:

数组表示每个座位是否坐人,0未坐,1已坐人;数组长度在【1,10000】
输出描述:

输出最多还能坐多少人?

示例1:

输入:10001

输出:1

示例2:

输入:0101

输出:0

思路:

  • 遍历每个座位,若为1,则+2并继续循环;若为0,则继续判断左右位置是否为0,最终判断该位置是否可以入座;
  • 判断每个位置的左 右位置时,注意判断越界问题
    • 座位数为 1 则会双越界;
    • 座位数 >=2 则单越界;
c 复制代码
# 输入座位
s = list(input().strip())
n = len(s)

# 长度为1   双越界
if n == 1:
    if s[0] == "1":
        result = 0
    else:
        result = 1
else: #  单越界
    i = 0
    result = 0
    while i < n:
        if s[i] == "1":
            i += 2
            continue
        else:
            left = i - 1
            right = i + 1
            condition = [
                (left < 0 and s[right] == "0"),
                (s[left] == "0" and right >= n),
                (left >=0 and right < n and s[left] == s[right] == "0")
            ]
            if any(condition):
                result += 1
                s[i] = "1"
                i += 2
            else:
                i += 1

print(result)
相关推荐
laufing3 个月前
OD C卷 - 幼儿园篮球游戏
双指针·python算法
laufing3 个月前
OD C卷 - 结对编程
python算法·条件计算
laufing3 个月前
OD C卷 - 5G网络建设
·并查集·python算法
laufing3 个月前
OD C卷 - 小扇和小船的数字游戏
二进制·python算法
laufing4 个月前
OD C卷 - CPU算力分配
逻辑分析·python算法
laufing4 个月前
OD C卷 - 最多购买宝石数目
滑动窗口·python算法
laufing4 个月前
OD C卷 - 宽度最小的子矩阵
滑动窗口·python算法
哪 吒1 年前
华为OD机试 - 热点网站统计 - 逻辑分析(Java 2023 B卷 100分)
java·开发语言·华为od·七日集训·逻辑分析