当前位置: 首页 > news >正文

华为OD机试真题B卷 Java 实现【停车场车辆统计】,附详细解题思路

一、题目描述

特定大小的停车场,数组cars[]表示,其中1表示有车,0表示没车。

车辆大小不一,小车占一个车位(长度1),货车占两个车位(长度2),卡车占三个车位(长度3)。

统计停车场最少可以停多少辆车,返回具体的数目。

二、输入描述

整型字符串数组cars[],其中1表示有车,0表示没车,数组长度小于1000。

输入0,0,1,0,1,1,1,0,0,1,1,0。

输入说明:

小车占一个车位(长度1),货车占两个车位(长度2),卡车占三个车位(长度3)。

1表示1个小车,两个连续的1表示货车,三个连续的1表示卡车。

三、输出描述

整型数字字符串,表示最少停车数目。

四、解题思路

  1. 读取输入的停车场信息,存储在字符串数组 cars[] 中;
  2. 初始化变量 total 和 tem 为0,用于记录停车总数和连续有车的长度;
  3. 遍历停车场数组 cars[],根据当前位置的值进行如下操作:
    • 如果当前位置为1,表示有车,将 tem 值加1;
    • 如果当前位置为0,表示没车,且 tem 不为0,表示之前有连续的车辆,根据 tem 的值计算可停放的最少车辆数,并累加到 total 中,然后将 tem 重置为0。
  4. 如果遍历结束后 tem 不为0,表示最后一辆车辆后面没有0了,需要将 tem 的值计算可停放的最少车辆数,并累加到 total 中;
  5. 输出最少停车数目 total。

五、Java算法源码

public static void main(String[] args) {Scanner sc = new Scanner(System.in);String[] split = sc.nextLine().split(",");int total = 0;int tem = 0;for (String s : split) {if (Integer.parseInt(s) == 1) {tem++;} else {if (tem != 0) {total += calcMin(tem);}tem = 0;}}total += calcMin(tem);System.out.println(total);}private static int calcMin(int num) {int total = 0;while (num >= 3) {num -= 3;total++;}while (num >= 2) {num -= 2;total++;}total += num;return total;}

六、效果展示

在这里插入图片描述

🏆本文收录于,华为OD机试2023(Java)

本专栏包含了最新最全的2023年华为OD机试真题,有详细的分析和Java解答。已帮助1000+同学顺利通过OD机考。专栏会持续更新,每天在线答疑。

http://www.lryc.cn/news/91563.html

相关文章:

  • 第二章:MySQL环境搭建
  • 生产环境之负载均衡LVS+keepalived方案(2)_LVS介绍
  • 【parsel】------- PYTHON爬虫基础4
  • MySQL数据库从入门到精通学习第8天(表数据的查询)
  • 什么是IPAM?如何使用IPAM来管理IP地址和DHCP?
  • PCIE学习
  • 商业智力,Social焕新|数说故事重磅发布“SocialGPT”,国内首个专注Social领域的商业大模型
  • STM32HAL库RS485-ModBus协议控制伺服电机
  • 【医学图像】图像分割系列.3 (uncertainty)
  • Java有线程安全的set吗?
  • 《HelloGitHub》第 86 期
  • LDGRB-01 3BSE013177R1 将数字输入和继电器输出结合
  • 手动计算校正年龄、性别后的标准化死亡率 (SMR)
  • Java组合模式:构建多层次公司组织架构
  • Langchain-ChatGLM:基于本地知识库问答
  • 设计模式十 适配器模式
  • 1.6 初探JdbcTemplate操作
  • 为什么要用线程池?
  • c语言的预处理和编译
  • 网络安全必学 SQL 注入
  • Docker基础知识详解
  • 腾讯、阿里入选首批“双柜台证券”,港股市场迎盛夏升温?
  • CentOS7 使用Docker 安装MySQL
  • 注解和反射复习
  • RocketMQ的demo代码
  • C++ 连接、操作postgreSQL(基于libpq库)
  • Node.js技术简介及其在Web开发中的应用
  • 时间序列分析:原理与MATLAB实现
  • mysql排序之if(isnull(字段名),0,1),字段名 或者 if(isnull(字段名),1,0),字段名
  • 华为OD机试真题 Java 实现【递增字符串】【2023Q1 200分】,附详细解题思路