c_zj_最佳位置(拼接数组处理环)
疫情逐步缓和后,体育馆终于迎来了第一场篮球比赛,为了保持距离,篮球迷小杰选定某圈座位后,想尽量选择一个远离人群的位置。
已知由0和1组成的环形数组表示当前排的座位情况其中1表示已被选座,0表示空座请问小杰所选座位和最近人的座位距离数最大是多少?有如下假设:至少有一个人已选座,至少有一个空座位,定义:相邻座位的座位距离数为1
输入:第一行是一个正整数N(2<-N<-1000),表示数组长度第二行是N个数K1, K2...Kn组成的环形数组,Kn为0或1
提示:因为数组是环形的,所以可以假设最后一个元素的下一个元素是第一个元素,而第一个元素的前一个元素是最后一个元素。
输入
8
0 0 0 0 0 1 0 0
输出
4
思路:直接拼接,然后取每个相邻 1 位置的距离的一半
n=int(input())
A=list(map(int, input().split()))
ans=0;
A=A+A
m=len(A)
B=[]
for i in range(m):
if A[i]==1:
B.append(i)
for i in range(1,len(B)):
ans=max(ans, (B[i]-B[i-1])//2)
print(ans)