【华为OD题库-090】找车位-java

news/2024/7/20 19:14:15 标签: 华为od, java

题目

停车场有一横排车位,0代表没有停车,1代表有车。至少停了一辆车在车位上,也至少有一个空位没有停车。为了防剐蹭,需为停车人找到一个车位,使得距停车人的车最近的车辆的距离是最大的,返回此时的最大距离。
输入描述
1.一个用半角逗号分割的停车标识字符串,停车标识为0或1,0为空位,1为已停车。
2.停车位最多100个。
输出描述
输出一个整数记录最大距离
示例1:
输入∶
1,0,0,0,0,1,0,0,1,0,1
输出:
2

思路

找到两个1之间的范围,比如1,0,0,0,1,此范围的最小间距=(end-start)/2,现要求最大的距离,遍历一次即可。同时需要考虑两端不为1的情况。
使用lst记录上次为1的索引,初始值为-1,遍历nums:
如果nums[i]=1,lst为-1,说明i之前都为0,此时停靠在第0个位置即可,距离为:i
如果lst不为-1,那么停靠在lst和i的中间时,可以得到最大距离为:(i - lst) / 2
遍历完成后,lst为最后1个1的索引,还需要计算它到nums结尾的距离:nums.length-1-lst
在上述逻辑中,获取最终的最大值即可

题解

java">package hwod;

import java.util.Arrays;
import java.util.Scanner;

public class FindPark {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int[] nums = Arrays.stream(sc.nextLine().split(",")).mapToInt(Integer::parseInt).toArray();
        System.out.println(findPark(nums));
    }

    private static int findPark(int[] nums) {
        int res = 0;
        int lst = -1;//上一个为1的位置
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] == 0) continue;
            if (lst == -1) {
                res = Math.max(res, i);
            } else {
                res = Math.max(res, (i - lst) / 2);
            }
            lst = i;
        }
        return Math.max(res,nums.length-1-lst);
    }
}

推荐

如果你对本系列的其他题目感兴趣,可以参考华为OD机试真题及题解(JAVA),查看当前专栏更新的所有题目。


http://www.niftyadmin.cn/n/5264792.html

相关文章

python:logging 日志模块详解

python.logging 用标准库logging模块记录生成的日志&#xff0c;有日志的具体时间、日志发生的模块、有日志级别和日志的具体内容等等 参考&#xff1a; https://zhuanlan.zhihu.com/p/476549020?utm_id0 https://zhuanlan.zhihu.com/p/454463040 日志级别 日志分为5个级别…

如何在Python控制台中运行程序

一、打开cmd&#xff0c;并进入程序所在的目录 这里可以先进入要运行的程序所在的目录&#xff0c;然后在地址栏输入cmd并回车&#xff0c;就可以打开cmd并定位到当前目录。 二、在控制台中运行程序 python hello.py运行结果就会打印出来了

机器人集群控制算法概述

机器人集群控制算法是指一组算法&#xff0c;用于协调和控制多个机器人协同工作&#xff0c;以完成特定任务或达到特定目标。以下是一些常见的机器人集群控制算法&#xff1a; 集群协同行为算法&#xff1a; 领航者/跟随者&#xff08;Leader/Follower&#xff09;&#xff1a…

学习MS Dynamics AX 2012编程开发 1. 了解Dynamics AX 2012

在本章中&#xff0c;您将了解开发环境的结构以及Microsoft Dynamics AX中的开发人员可以访问哪些工具。在本书的第一步演练之后&#xff0c;您将很容易理解著名的Hello World代码&#xff0c;您将知道应用程序对象树中的不同节点代表什么。 以下是您将在本章中学习的一些主题…

Elasticsearch面试题

Elasticsearch面试题&#xff08;来源&#xff1a;Elasticsearch&#xff09; 1 、为什么要使用 Elasticsearch&#xff1f; 系统中的数据&#xff0c; 随着业务的发展&#xff0c;时间的推移&#xff0c; 将会非常多&#xff0c; 而业务中往往采用模糊查询进行数据的搜索&…

详细教程 - 从零开发 鸿蒙harmonyOS应用 第四节 (鸿蒙Stage模型 登录页面 ArkTS版 推荐使用)

在鸿蒙OS中&#xff0c;Ability是应用程序提供的抽象功能&#xff0c;可以理解为一种功能。在应用程序中&#xff0c;一个页面即一种能力&#xff0c;如登录页面&#xff0c;即具有登录功能的能力。以下是对鸿蒙新建项目的登录代码功能的详细解读和工作流程的描述&#xff1a; …

数据安全新风向:迅软DLP在新能源行业的成功应用案例分享

新能源产业面临的数据安全问题&#xff1a; 新能源产业是我国加快培育和发展的战略性新兴产业之一&#xff0c;国家能源局发布“十三五”时期改革的主要任务中重点指出要着力推进能源系统优化&#xff0c;实施互联网智慧能源等行动计划。目前新能源行业已从基础的生产自动化逐…

ShardingSphere-JDBC 和 ShardingSphere-Proxy,你选择哪一个

参考文章 总结&#xff1a; 只使用Java&#xff0c;ShardingSphere-JDBC更好有异构语言的话&#xff0c;ShardingSphere-Proxy 更好混用也挺香