849. 到最近的人的最大距离 --力扣 --JAVA

题目

给你一个数组 seats 表示一排座位,其中 seats[i] = 1 代表有人坐在第 i 个座位上,seats[i] = 0 代表座位 i 上是空的(下标从 0 开始)。

至少有一个空座位,且至少有一人已经坐在座位上。

亚历克斯希望坐在一个能够使他与离他最近的人之间的距离达到最大化的座位上。

返回他到离他最近的人的最大距离。

解题思路

        1.座位存在3种情况:两者之间(中间)、开始位置、结束位置

        2.中间位置需要除以二(左右)

        3.开始位置和结尾位置就是差值

代码示例
class Solution {
    public int maxDistToClosest(int[] seats) {
        int left = -1;
        int max = 0;
        for(int i = 0; i < seats.length; i++){
            if(seats[i] == 1){
                //处理开始空位
                if(left == -1){
                    max = Math.max(max, i);
                    left = i;
                } else {
                    max = Math.max(max,(i - left) / 2);
                    left = i;
                }
            }
        }
        //处理结尾空位
        return Math.max(max, seats.length - left - 1);
    }
}

你可能感兴趣的:(力扣练习,leetcode,算法,职场和发展)