目录
- 一、题目描述
- 二、输入描述
- 三、输出描述
- 四、解题思路
- 五、Python算法源码
- 六、效果展示
- 1、输入
- 2、输出
- 3、说明
一、题目描述
工位由序列F1,F2…Fn组成,Fi值为0、1或2。其中0代表空置,1代表有人,2代表障碍物。
1、某一空位的友好度为左右连续老员工数之和
2、为方便新员工学习求助,优先安排友好度高的空位
给出工位序列,求所有空位中友好度的最大值。
二、输入描述
第一行为工位序列:F1,F2…Fn组成,1<=n<=100000,Fi值为0、1或2。其中0代表空置,1代码有人,2代表障碍物
其中0代表空置,1代码有人,2代表障碍物。
三、输出描述
所有空位中友好度的最大值。如果没有空位,返回0。
四、解题思路
找到每个0出现的位置,然后分别向前后找连续出现的1,出现计数变量就加一,不是1就跳
五、Python算法源码
seats = [int(x) for x in input().split(" ")]
result = 0
# 0的左边有几个1
left = 0
# 0的右边有几个1
right = 0
for i in range(len(seats)):
# 0的左边有几个1
if (seats[i] == 1):
left += 1
elif (seats[i] == 2):# //遇到障碍物,左边1的数量归0
left = 0
elif (seats[i] == 0):
for j in range(i + 1, len(seats)):
# 0的右边有几个1
if (seats[j] == 1):
right += 1
# 计算右边一共出现几个1
elif (seats[j] == 0 or seats[j] == 2):
break
# 如果当前0的友好度不是最大,则替换为最大
if (result < left + right):
result = left + right
# 当前0的友好度计算完毕,左右1的个数归0,计算下一个0的友好度
right = 0
left = 0
print(result)
六、效果展示
1、输入
1 1 0 1 2 1 0
2、输出
3
3、说明
第一个0的友好度为3,第二个0的友好度为1,故输出3。
🏆下一篇:华为OD机试真题 Python 实现【相对开音节】【2022Q4 100分】,附详细解题思路
🏆本文收录于,华为OD机试(Python)真题(A卷+B卷)
刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,订阅后,专栏内的文章都可看,发现新题目,随时更新,全天CSDN在线答疑。