【每日一题Day302】LC849到最近的人的最大距离 | 贪心+分类讨论

简介: 【每日一题Day302】LC849到最近的人的最大距离 | 贪心+分类讨论

到最近的人的最大距离【LC849】

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

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

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

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

  • 思路:贪心+分类讨论
  • 如果某个人前面没有其他人,为了使距离最大,应选择坐在位置0
  • 如果某个人后面没有其他人,为了使距离最大,应选择坐在位置n-1
  • 如果某个位置前后均有人,为了使距离最大,应坐在这两个人中间
  • 取最大值返回
  • 实现
class Solution {
    public int maxDistToClosest(int[] seats) {
        int n = seats.length;
        int res = 0, pre = -1;
        for (int i = 0; i < n; i++){
            if (seats[i] == 1){
                if (pre == -1){// 前面没有人坐 坐在0
                    res = Math.max(res, i);
                }else{// 坐在pre和i的中间位置
                    res = Math.max(res, (i - pre) / 2);
                }
                pre = i;
            }
        }
        res = Math.max(res, n - 1 - pre);// 坐在n-1  
        return res;
    }
}

image.png

目录
相关文章
|
4月前
|
人工智能 BI
【每日一题Day267】LC834树中距离之和 | 换根dp
【每日一题Day267】LC834树中距离之和 | 换根dp
22 0
|
4月前
【每日一题Day342】LC2578最小和分割 | 贪心
【每日一题Day342】LC2578最小和分割 | 贪心
18 0
|
4月前
【每日一题Day149】LC2389和有限的最长子序列 | 贪心+前缀和+二分查找
【每日一题Day149】LC2389和有限的最长子序列 | 贪心+前缀和+二分查找
20 0
|
4月前
|
人工智能 BI
【每日一题Day354】LC2316统计无向图中无法互相到达点对数 | 并查集
【每日一题Day354】LC2316统计无向图中无法互相到达点对数 | 并查集
25 0
|
4月前
【每日一题Day192】LC1033移动石子直到连续 | 分类讨论 贪心
【每日一题Day192】LC1033移动石子直到连续 | 分类讨论 贪心
17 0
|
4月前
【每日一题Day261】LC16最接近的三数之和 | 双指针
【每日一题Day261】LC16最接近的三数之和 | 双指针
18 0
|
4月前
【每日一题Day170】LC1040移动石子直到连续 II | 双指针 贪心 数学
【每日一题Day170】LC1040移动石子直到连续 II | 双指针 贪心 数学
28 1
|
4月前
【每日一题Day223】LC1130叶值的最小代价生成树 | 贪心 区间dp
【每日一题Day223】LC1130叶值的最小代价生成树 | 贪心 区间dp
25 0
|
4月前
|
机器学习/深度学习
【每日一题Day271】LC918环形子数组的最大和 | 分类讨论 + dp
【每日一题Day271】LC918环形子数组的最大和 | 分类讨论 + dp
19 0
【每日一题Day271】LC918环形子数组的最大和 | 分类讨论 + dp
|
4月前
【每日一题Day224】LC2517礼盒的最大甜蜜度 | 二分答案
【每日一题Day224】LC2517礼盒的最大甜蜜度 | 二分答案
14 0