Maximize Distance to Closest Person

题目
In a row of seats, 1 represents a person sitting in that seat, and 0 represents that the seat is empty.

There is at least one empty seat, and at least one person sitting.

Alex wants to sit in the seat such that the distance between him and the closest person to him is maximized.

Return that maximum distance to closest person.

Example 1:

Input: [1,0,0,0,1,0,1]
Output: 2
Explanation:
If Alex sits in the second open seat (seats[2]), then the closest person has distance 2.
If Alex sits in any other open seat, the closest person has distance 1.
Thus, the maximum distance to the closest person is 2.
Example 2:

Input: [1,0,0,0]
Output: 3
Explanation:
If Alex sits in the last seat, the closest person is 3 seats away.
This is the maximum distance possible, so the answer is 3.

答案

class Solution {
    public int maxDistToClosest(int[] seats) {
        int n = seats.length;
        int left_one_idx = -1, right_one_idx = n;
        int left = 0, right = n - 1;
        int[] arr1 = new int[n];
        int[] arr2 = new int[n];


        while(left < n) {
            if(seats[left] == 1) {
                arr1[left] = 0;
                left_one_idx = left;
            }
            else {
                if(left_one_idx == -1) arr1[left] = Integer.MAX_VALUE;
                else arr1[left] = left - left_one_idx;
            }

            if(seats[right] == 1) {
                arr2[right] = 0;
                right_one_idx = right;
            }
            else {
                if(right_one_idx == n) arr2[right] = Integer.MAX_VALUE;
                else arr2[right] = right_one_idx - right;
            }

            left++;
            right--;
        }
        int max = Integer.MIN_VALUE;
        for(int i = 0; i < n; i++) {
            int min = Math.min(arr1[i], arr2[i]);
            if(min > max) max = min;
        }
        return max;
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 12,163评论 0 10
  • **2014真题Directions:Read the following text. Choose the be...
    又是夜半惊坐起阅读 13,482评论 0 23
  • 友情提示:作为一个java小白最近在看java多线程知识,东西还是比较多,推荐大家去看《Java多线程编程指南》,...
    NEU_PROYZ阅读 5,132评论 3 1
  • 1.日出。 酒精在胃里的消化过程告诉你:这就叫“饮酒后遗症”。 它们一股一股咆哮作乱,寻找破绽突围,搞得一晚上也没...
    高小花0218阅读 2,656评论 0 1
  • 处在社会最底层的人要想往上攀升,第一步还不是要解决素质教育,而是接受技能的教育。 洪堡的教育理念:每一个从社会所获...
    Matrix101阅读 2,312评论 0 0