Leecode #849. 到最近的人的最大距离
class Solution:
def maxDistToClosest(self, seats):
l = len(seats)
arr = [0]*l
count = 0
flag = False
for i in range(l):
if seats[i]:
count = 0
flag = True
continue
elif flag:
count += 1
arr[i] = count
count = 0
flag = False
for i in range(l-1,-1,-1):
if seats[i]:
count = 0
flag = True
continue
elif flag:
count += 1
if arr[i]:
arr[i] = min(arr[i], count)
else:
arr[i] = count
return max(arr)
def maxDistToClosest(self, seats):
arr = []
count = 0
for i, seat in enumerate(seats):
if seat:
if count:
arr.append(count)
count = 0
else:
count += 1
if count:
arr.append(count)
mmax = 0
if not seats[0]:
mmax = max(mmax, arr[0])
if not seats[-1]:
mmax = max(mmax, arr[-1])
mmax = max(mmax, (max(arr)+1)//2)
return mmax
两种思路,第一种方法正向遍历、逆向遍历就能得到答案,比较好理解;第二种方法主要是数0的长度,可以继续优化空间。