LeetCode 0849. 到最近的人的最大距离

news2024/12/24 8:18:42

【LetMeFly】849.到最近的人的最大距离

力扣题目链接:https://leetcode.cn/problems/maximize-distance-to-closest-person/

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

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

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

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

 

示例 1:

输入:seats = [1,0,0,0,1,0,1]
输出:2
解释:
如果亚历克斯坐在第二个空位(seats[2])上,他到离他最近的人的距离为 2 。
如果亚历克斯坐在其它任何一个空位上,他到离他最近的人的距离为 1 。
因此,他到离他最近的人的最大距离是 2 。 

示例 2:

输入:seats = [1,0,0,0]
输出:3
解释:
如果亚历克斯坐在最后一个座位上,他离最近的人有 3 个座位远。
这是可能的最大距离,所以答案是 3 。

示例 3:

输入:seats = [0,1]
输出:1

 

提示:

  • 2 <= seats.length <= 2 * 104
  • seats[i]01
  • 至少有一个 空座位
  • 至少有一个 座位上有人

方法一:遍历

一共分为三种情况:

  1. 左边
  2. 尽可能坐两人中间
  3. 右边

遍历一遍,取一个最大值即可。

  • 时间复杂度 O ( l e n ( s e a t s ) ) O(len(seats)) O(len(seats))
  • 空间复杂度 O ( 1 ) O(1) O(1)

AC代码

C++

class Solution {
public:
    int maxDistToClosest(vector<int>& seats) {
        int ans=1;
        int lastSeat = -1;
        for (int i = 0; i < seats.size(); i++) {
            if (seats[i]) {
                if (lastSeat == -1) {  // 首次
                    ans = max(ans, i);
                }
                else {
                    ans = max(ans, (i - lastSeat) / 2);
                }
                lastSeat = i;
            }
        }
        ans = max(ans, (int)seats.size() - lastSeat - 1);
        return ans;
    }
};

Python

# from typing import List

class Solution:
    def maxDistToClosest(self, seats: List[int]) -> int:
        ans = 1
        lastSeat = -1
        for i in range(len(seats)):
            if seats[i]:
                if lastSeat == -1:
                    ans = max(ans, i)
                else:
                    ans = max(ans, (i - lastSeat) // 2)
                lastSeat = i
        ans = max(ans, len(seats) - lastSeat - 1)
        return ans

同步发文于CSDN,原创不易,转载经作者同意后请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/132420545

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/910828.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Consistency Models终结扩散模型

最近看到一篇论文&#xff0c;觉得特别有意思&#xff0c;并且在学术界引起了不小的动静&#xff0c;他就是一致性模型&#xff0c;据说图像生成效果快、质量高&#xff0c;并且还可以实现零样本图像编辑&#xff0c;即不进行一些视觉任务训练&#xff0c;可以实现图像超分、修…

MySQL的select ... where ...会加锁吗?

先说答案&#xff1a;不会。但select … where … lock in share mode会加锁。实验如下。 存储引擎innodb&#xff0c;MySQL版本5.7。 1&#xff1a;select … where … 如下图&#xff1a; 1&#xff1a;select … where … lock in share mode 如下图&#xff1a; 接着我…

sed替换命令

用sed编辑流时&#xff0c;最强大的命令莫过于它的替换命令。它有许多参数选项&#xff0c;可以完成诸多复杂的工作。 1. 替换命令的语法 sed [address-range|pattern-range] s/original-string /replacement-string/[substitute-flags] inputfile 注意&#xff0c;上面的换…

day-27 代码随想录算法训练营(19)回溯part03

39.组合总和 分析&#xff1a;同一个数可以选多次&#xff0c;但是不能有重复的答案&#xff1b; 思路&#xff1a;横向遍历&#xff0c;纵向递归&#xff08;不同的是递归的时候不需要跳到下一个位置&#xff0c;因为同一个数可以选多次&#xff09; class Solution { publ…

计算机视觉入门 3)最大池化

目录 一、最大池化最大池化进行压缩平移不变性 二、代码示例步骤2&#xff1a;图像读取转换步骤2&#xff1a;Filter & ReLU步骤3&#xff1a;Pool 一、最大池化 最大池化进行压缩 在Keras中&#xff0c;通过一个 MaxPool2D 层&#xff0c;将压缩步骤添加到之前的模型中&…

CentOS下载ISO镜像的方法

目录 一、CentOS 介绍 二、进入CentOS 官方网站 三、步骤 一、CentOS 介绍 CentOS&#xff0c;中文意思是社区企业操作系统是Linux发行版之一&#xff0c;是免费的、开源的、可以重新分发的开源操作系统。 CentOS Linux发行版是一个稳定的&#xff0c;可预测的&#xff0…

防静电实时监控系统的工作原理和主要功能

防静电监控系统是一种用于实时监测静电数值变化的集成系统。它的主要作用是检测和预防静电所可能引起的危险和损坏。以下是该系统的一般工作原理和主要功能&#xff1a; 1. 检测静电&#xff1a;防静电实时监控系统通过传感器和测量设备来监测周围环境中的静电水平。这些传感器…

TDA4超级玩家浮出水面,行泊一体功能、成本刷到极致

2023年以来&#xff0c;智能驾驶市场进入L2普及、高阶ADAS功能&#xff08;NOA&#xff09;大规模量产的新周期&#xff0c;降本增效&#xff0c;打造极致性价比、提升用户体验等&#xff0c;成为了竞争的焦点。 其中&#xff0c;替换更具性价比的硬件平台、传感器复用、系统优…

h264 SPS 帧分辨率解析标准

来源:微信公众号「编程学习基地」 文章目录 导致1088出现的原因h264 sps解析h264bitstream的简单使用导致1088出现的原因 大部分IPC推过来的数据流都是标准的1080P(1920x1080),720P(1280x720) 但是也有个例,部分设备存在16位/32位对齐的情况,出现非标1080P(1920x1088),72…

这些数学运算符号你都见过吗?

入门教程、案例源码、学习资料、读者群 请访问&#xff1a; python666.cn 大家好&#xff0c;欢迎来到 Crossin的编程教室 &#xff01; 数学运算是编程时少不了的操作。 其中加减乘除都比较简单&#xff0c;就和正常数学中的写法一样。要注意的就是在绝大多数编程语言中&#…

怎样做好数字营销呢?

2023 年&#xff0c;数字营销将随着新技术、趋势和消费者行为的不断发展而不断发展。要在 2023 年在数字营销领域取得成功&#xff0c;请考虑以下策略&#xff1a; 1.内容质量和个性化&#xff1a; 专注于制作与目标受众产生共鸣的高质量且相关的内容。 根据用户偏好、行为和…

elemenPlus ElMessage 字符串如何换行问题

因为后端返回的数据是一长串&#xff0c;而且带有\r,\n等换行符&#xff0c;但是并没有生效。前端写法&#xff1a; // 抛出错误ElMessage.error(msg);我们知道\r&#xff0c;\n&#xff0c;\r\n 是在不同系统下的换行符的表示&#xff0c;但在JavaScript返回字符串中并没有生效…

为何有很多人选择使用ChatGPT的替代品?

尽管ChatGPT备受赞誉且确实是出色的工具&#xff0c;但它也有一些限制。 现在有一些工具比ChatGPT更为经济&#xff0c;并且拥有大量现成的功能&#xff0c;而在ChatGPT中&#xff0c;这需要收集整理编写大量的提示。[1] ChatGPT没有提供对GPT-4模型的无限访问&#xff0c;也没…

GIS应用技巧之空间插值分析

一、空间插值概论 空间插值常用于将离散点的测量数据转换为连续的数据曲面&#xff0c;以便探究空 间现象的分布模式&#xff0c;该方法通常用来分析地区环境污染、地区降水量、地区气候 变化、资源利用程度、公共基础设施影响效应等。空间插值方法分为两类&#xff1a;一类 是…

c语言——判断一个字符有多少位数

//判断一个字符有多少位数 #include<stdio.h> #include<stdlib.h> int main() {long long n;int count0;printf("输入整数&#xff1a;");scanf("%lld",&n);while(n!0){n/10;count;} printf("数字是%d位数\n",count);system(&qu…

探索组间差异利器:Tukey 检验 【Tukey Test】

前言 统计学中有许多方法可用于比较不同组别之间的差异&#xff0c;而其中一种常见且强大的工具就是Tukey检验。当我们进行多组实验或研究时&#xff0c;常常需要了解哪些组别之间存在显著差异&#xff0c;而不仅仅是确定是否存在差异。在这个问题上&#xff0c;Tukey检验可以为…

ArcGIS Pro怎么解决道路压盖问题

在默认情况下&#xff0c;道路可能会存在低等级道路将高等级道路压盖、在道路连接处不连通的情况&#xff0c;这些问题都可以在ArcGIS Pro内解决&#xff0c;这里为大家介绍一下处理方法&#xff0c;希望能对你有所帮助。 道路分级 在符号系统内&#xff0c;选择唯一值&#x…

查看镁光DDR芯片型号的办法

查看镁光DDR芯片型号的办法 百度镁光官网 搜索decoder 输入需要查询的FBGA信息 镁光芯片丝印有两行&#xff0c;第一行为产地&#xff0c;不用管&#xff0c;第二行就是FBGA

PLSQL DEVELOPER 右侧工具栏剪贴板不见了怎么显示

解决&#xff1a;在左侧顶级菜单中找到视图&#xff0c;然后找到PLSQL剪贴板&#xff0c;把它勾选上&#xff0c;就会显示出来了。

企业虚拟直播是什么,操作界面和直播观看界面截图介绍

企业虚拟直播是什么&#xff0c;操作界面和直播观看界面截图介绍 企业MR虚拟直播操作界面和直播观看界面 “虚拟场景虚拟特效虚拟录播/直播”技术方案.MR虚拟直播 MR虚拟直播带来的内容、体验和互动的升级&#xff0c;对多个行业、场景具有重大意义&#xff0c;尤其是在汽车、科…