Leecode #849. 到最近的人的最大距离

少于 1 分钟读完

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的长度,可以继续优化空间。

分类:

更新时间: