感谢@中原一点红提供的华为OD机试真题2023Q1 100分“座位调整”,一看nike标志,就稳了

目录

华为OD机试 2023B卷题库疯狂收录中,刷题++点这里++

专栏导读

本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷)》

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

一、鸣谢

感谢@中原一点红提供的华为机试真题2023Q1 100分"座位调整",一看nike标志,就稳了,现金红包已感谢。

祝大家考试顺序,遇到的都刷过,没遇到的都灵光乍现。

二、题目描述

疫情期间课堂的座位进行了特殊的调整,不能出现两个同学紧挨着,必须隔至少一个空位。

给你一个整数数组desk,表示当前座位的占座情况,由若干个0和1组成,其中0表示没有占位,1表示占位。

在不改变原有座位秩序情况下,还能安排坐几个人?

三、输入描述

第一行是一个数组,表示占座情况,由若干个0和1组成,其中0表示没有占位,1表示占位。

四、输出描述

输出数值表示还能坐几个人?

五、思路分析

不能出现两个同学紧挨着,必须隔至少一个空位。

其中0表示没有占位,1表示占位。

也就是说最理想的排座是1,0,1,0,1,0,1。

如果是0,0,1,0,0,1,0,0,0,1 -- 变成1,0,1,0,0,1,0,1,0,1即可

解题思路

  1. 输入一个数组,表示占座情况,由若干个0和1组成,其中0表示没有占位,1表示占位;
  2. 通过java8 Stream表达式(简洁/方便/上档次)快速拆解输入行;
  3. 遍历座位数组;
    • 如果当前值是0,则继续判断是否需要增加座位;
    • 如果是第一个,就不用判断前一个;
    • 如果是最后一个,就不用判断下一个;
    • 前一个和后一个都是0,则增加1个座位;
  4. 输出数值表示还能坐几个人。

六、Java算法源码

java 复制代码
package com.guor.od;

import java.util.*;

public class OdTest {
    /**
     * 不能出现两个同学紧挨着,必须隔至少一个空位。
     * 其中0表示没有占位,1表示占位
     *
     * 也就是说最理想的排座是1,0,1,0,1,0,1
     *
     * 如果是0,0,1,0,0,1,0,0,0,1 -- 变成1,0,1,0,0,1,0,1,0,1即可
     */
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        // 给你一个整数数组desk,表示当前座位的占座情况,由若干个0和1组成,其中0表示没有占位,1表示占位。
        int[] desk = Arrays.stream(sc.nextLine().split(",")).mapToInt(Integer::parseInt).toArray();

        // 能坐几个人
        int num = 0;
        for (int i = 0; i < desk.length; i++) {
            // 如果当前值是0,前一个和后一个都是0,则增加1个座位
            if (desk[i] == 0) {
                // 如果是第一个,就不用判断前一个
                boolean startFlag = (i == 0) || (desk[i - 1] == 0);
                // 如果是最后一个,就不用判断下一个
                boolean endFlag = (i == desk.length - 1) || (desk[i + 1] == 0);
                // 前一个和后一个都是0,则增加1个座位
                if (startFlag && endFlag) {
                    num++;
                    desk[i] = 1;
                    i++;
                }
            }
        }

        // 输出数值表示还能坐几个人
        System.out.println(num);
    }
}

七、效果展示

1、输入

0,0,1,0,0,1,0,0,0,1

2、输出

2

🏆下一篇:华为OD机试真题 Java 实现【路灯照明问题】【2022Q4 100分】,感谢fly晨发现这个问题,并提供更优质的算法

🏆本文收录于,华为OD机试(JAVA)真题(A卷+B卷)

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

相关推荐
盐焗西兰花1 小时前
鸿蒙学习实战之路:状态管理最佳实践
学习·华为·harmonyos
小毅&Nora2 小时前
【人工智能】【深度学习】 ⑦ 从零开始AI学习路径:从Python到大模型的实战指南
人工智能·深度学习·学习
Maxwell_li12 小时前
Pandas 描述分析和分组分析学习文档
学习·数据分析·numpy·pandas·matplotlib
雷工笔记3 小时前
MES学习笔记之SCADA采集的数据如何与MES中的任务关联起来?
笔记·学习
繁星星繁3 小时前
【C++】脚手架学习笔记 gflags与 gtest
c++·笔记·学习
Lovely Ruby4 小时前
前端er Go-Frame 的学习笔记:实现 to-do 功能(三),用 docker 封装成镜像,并且同时启动前后端数据库服务
前端·学习·golang
YJlio5 小时前
SDelete 学习笔记(9.18):安全删除、空闲清理与介质回收实战
笔记·学习·安全
爬上树顶6 小时前
软件项目中的人与事
程序人生·职场和发展·蓝桥杯
d111111111d7 小时前
STM32低功耗学习-停止模式-(学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习
找了一圈尾巴7 小时前
LLM-as-a-Judge-论文学习(下)
学习·模型评估