Java 华为真题-新员工座位安排

news2024/10/6 10:39:24

需求:

工位由序列F1,F2…Fn组成,Fi值为0、1或2。其中0代表空置,1代表有人,2代表障碍物.
  1、某一空位的友好度为左右连续老员工数之和
  2、为方便新员工学习求助,优先安排友好度高的空位给出工位序列,求所有空位中友好度的最大值

输入描述:
     第一行为工位序列: F1.F2…Fn组成,1<=n<=100000,Fi值为0、1或2。其中0代表空置,1代码有人,2代表障碍物其中0代表空置,1代码有人,2代表障碍物。
输出描述:
    所有空位中友好度的最大值。如果没有空位,返回0 

示例1
输入:
0 1 0
输出:
1

说明:
第1个位置和第3个位置,友好度均为1

示例2
输入:
1 1 0 1 2 1 0
输出:
3

说明:
第3个位置友好度为3。因障碍物隔断,左边得2分,右边只能得1分

编码:

public class TesEmployee {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("输入工位序列:");
        String[] postion = sc.nextLine().split(" ");
        //字符串数组转换成整数数组
        int[] arr = Arrays.asList(postion).stream().mapToInt(Integer::parseInt).toArray();

        //使用map存放
        Map<Integer, Integer> mapLeft = new HashMap<>();
        Map<Integer, Integer> mapRight = new HashMap<>();

        //调用方法
        saveMap(arr,0,mapLeft);
        saveMap(arr,1,mapRight);

//        所有空位中友好度的最大值
        int max=getMax(mapLeft,mapRight);
        System.out.println(max);

    }

    /**
     * 计算所有空位中友好度的最大值
     * @param map1
     * @param map2
     * @return
     */
    public static int getMax(Map<Integer, Integer> map1,Map<Integer, Integer> map2){
       int max=0;
        for (Integer key:map1.keySet()
             ) {
            Integer  value=map1.get(key)+map2.get(key);
            //进行比较
            max=Math.max(max,value);
        }
        return max;
    }

    /**
     * 正向遍历一遍,反向遍历一遍,遇到0,就把连续1的值记录下来
     * @param arr
     * @param flag
     * @param map
     */
    public static void saveMap(int[] arr, int flag, Map<Integer, Integer> map) {
        //累计1的和
        int sum = 0;
        if (flag == 0) {  //如果是正向遍历, 工位是1的,sum就加1,工位是0,则sum为0
            //循环
            for (int i = 0; i < arr.length; i++) {
                //判断
                if (arr[i] == 1) {
                    sum++;  //累计和
                } else if (arr[i] == 0) {
                    map.put(i, sum);
                    sum = 0; //重置sum为0
                } else {
                    sum = 0; //重置sum为0
                }
            }
        } else {  //如果是反向遍历,同理;
            //循环
            for (int i = arr.length - 1; i >= 0; i--) {
                //判断
                if (arr[i] == 1) {
                    sum++;  //累计和
                } else if (arr[i] == 0) {
                    map.put(i, sum);
                    sum = 0; //重置sum为0
                } else {
                    sum = 0; //重置sum为0
                }
            }
        }

    }


}

效果:

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

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

相关文章

Python入门之【循环语句】全网最详细!

&#x1f3c5;我是默&#xff0c;这是我的个人主页。&#x1f4da;&#x1f4da; &#x1f31f;在这里&#xff0c;我要推荐给大家我的专栏《Python》。&#x1f3af;&#x1f3af; &#x1f680;无论你是编程小白&#xff0c;还是有一定基础的程序员&#xff0c;这个专栏都能满…

用智能文字识别技术赋能古彝文数字化之路

目录 1、前言 2、对古彝文古籍的保护迫在眉睫 3、古彝文识别的难点问题 4、古彝文文字识别的关键技术 4.1、智能高清滤镜技术 4.2、图像矫正 4.3、图像增强 4.4、版面还原 5、合合信息识别技术赋能古彝文数字化 1、前言 古彝文指的是在云南、贵州、四川等地的彝族人之…

一款免费的响应式界面调试工具

不知道大家平时开发响应式前端代码是如何调试的&#xff1f;是不是也跟我一样&#xff0c;通过浏览器的开发者工具来切换不同的界面尺寸来看验证效果呢&#xff1f; 可能是因为习惯了&#xff0c;平时就不停的切换不同尺寸来看效果。直到TJ君看到今天要推荐的这个免费工具&…

产品经理如何科学的进行需求调研?

导语&#xff1a;作为产品经理&#xff0c;需求调研是开展工作的重要环节之一。科学、有效地进行需求调研不仅可以帮助产品经理更好地了解用户需求&#xff0c;还能指导产品设计和功能开发&#xff0c;提升产品的竞争力。本文将介绍几种科学的方法和技巧&#xff0c;帮助产品经…

【linux基础】linux中文件权限的含义并修改

linux中文件权限的含义 前言文件类型字段访问权限字段如何修改访问权限基本语法&#xff1a;常用选项包括&#xff1a;数字形式权限模式&#xff1a;符号形式权限模式&#xff1a;示例用法&#xff1a; 总结 前言 在 Linux 中&#xff0c;文件的权限字段&#xff08;Permissio…

adjustText库解决深度学习、视觉模型matplotlib画散点图时由于标签非常多导致的重叠现象

pytorch框架 import matplotlib.pyplot as plt import numpy as np from adjustText import adjust_texty [30.48, 30.71, 30.52, 31.35, 31.53, 31.54, 31.82, 32.13, 32.21, 32.15, 31.92, 32.24, 32.21, 32.20, 32.35] x [0.057, 0.012, 0.025, 0.665, 1.774, 0.813, 0.55…

【面试必刷TOP101】寻找峰值 数组中的逆序对

目录 题目&#xff1a;寻找峰值_牛客题霸_牛客网 (nowcoder.com) 题目的接口&#xff1a; 解题思路&#xff1a; 代码&#xff1a; 过啦&#xff01;&#xff01;&#xff01; 题目&#xff1a;数组中的逆序对_牛客题霸_牛客网 (nowcoder.com) 题目的接口&#xff1a; …

Python二级 每周练习题20

练习一: 日期计算器 设计一款日期计算程序&#xff0c;能否实现下面的功能&#xff1a; (1)要求用户分别输入年、月、日&#xff08;分三次输入&#xff09;&#xff1b; (2)程序自动会根据输入的年月日计算出这一天是这一年的第几天&#xff1b; (3)输出格式为&#xff1a;这…

低功耗引擎Cliptrix为什么可以成为IOT的高效能工具

在万物互联的时代&#xff0c;现代人已普遍接受电视、音箱等电器设备具备智能化能力&#xff0c;也是在这个趋势下&#xff0c;我们身边越来越多的iOT设备联网和交互成为刚需。 但iot设备也面临到一些非常显著的痛点&#xff0c;例如iot设备的内存、处理器等核心元件无法与手机…

Selenium Web自动化测试 —— 高级控件交互方法!

一、使用场景 使用场景对应事件复制粘贴键盘事件拖动元素到某个位置鼠标事件鼠标悬停鼠标事件滚动到某个元素滚动事件使用触控笔点击触控笔事件&#xff08;了解即可&#xff09; https://www.selenium.dev/documentation/webdriver/actions_api 二、ActionChains解析 实例…

内网即时通讯软件:提升政企办公效率与数据安全的利器

在当今信息快速传播的社会中&#xff0c;即时通讯软件已经成为了人们生活中不可或缺的一部分。然而&#xff0c;对于政府机构和企业来说&#xff0c;传统的大众即时通讯软件已经不再满足他们日常工作的需求。市面上大多数个人即时通讯软件都是为大众用户设计的&#xff0c;它们…

【文末送书】用Chat GPT轻松玩转机器学习与深度学习

欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和技术。关…

PY32F003F18之RTC

一、RTC振荡器 PY32F003F18实时时钟的振荡器是内部RC振荡器&#xff0c;频率为32.768KHz。它也可以使用HSE时钟&#xff0c;不建议使用。HAL库提到LSE振荡器&#xff0c;但PY32F003F18实际上没有这个振荡器。 缺点&#xff1a;CPU掉电后&#xff0c;需要重新配置RTC&#xff…

Docker版部署RocketMQ开启ACL验证

一、拉取镜像 docker pull apache/rocketmq:latest 二、准备挂载目录 mkdir /usr/local/rocketmq/data mkdir /usr/local/rocketmq/conf 三、运行 docker run \ -d \ -p 9876:9876 \ -v /usr/local/rocketmq/data/logs:/home/rocketmq/logs \ -v /usr/local/rocketmq/data…

数字化工厂系统能给企业品牌带来什么价值

数字化工厂管理系统是指通过数字技术和自动化系统来实现生产过程的数字化和智能化的工厂。它对品牌的价值主要体现在提高效率、降低成本、提升品质和增强灵活性四个方面。 首先&#xff0c;数字化工厂能够显著提高生产效率。传统工厂生产过程中存在很多手工操作和人为干预&…

pyspark.sql.dataframe.DataFrame 怎么转pandas DataFrame

pyspark.sql.dataframe.DataFrame 怎么转pandas DataFrame 要将 PySpark 的 pyspark.sql.dataframe.DataFrame 转换为 Pandas DataFrame&#xff0c;可以使用 toPandas() 方法。以下是一个示例&#xff1a; from pyspark.sql import SparkSession# 创建 SparkSession 对象 sp…

SAP移动端解决方案参考

企业在实现SAP移动化时遇到的一些挑战&#xff0c;如果我们利用自己开发团队来进行应用程序的开发&#xff0c;可能会陷入规划&#xff0c;开发&#xff0c;调试&#xff0c;测试的循环中&#xff0c;最后仍一无所获。那如果企业寻找第三方咨询公司进行开发的话&#xff0c;又担…

分享5款无广告免费的高效软件

​ 有句老话这样讲&#xff0c;工欲善其事&#xff0c;必先利其器&#xff0c;好的工具可以让你工作起来事半功倍。今日为大家推荐5款神器软件&#xff0c;提升你的工作效率。 1.数据恢复——EasyRecovery ​ EasyRecovery是一款数据恢复工具,它可以恢复从硬盘或移动存储设备…

多个短视频如何合并为一个长视频?原来靠它

随着电子设备的流行&#xff0c;越来越多的用户喜欢制作视频来记录生活&#xff0c;以便将美好回忆永久保存方便日后观看。通常&#xff0c;人们更倾向于将多个短视频合并为一个长视频&#xff0c;因为这样更容易存储。那么&#xff0c;怎样才能将多个短视频合并为一个长视频呢…

c++ 使用rapidjson对数据序列化和反序列化(vs2109)

RapidJSON是腾讯开源的一个高效的C JSON解析器及生成器&#xff0c;它是只有头文件的C库&#xff0c;综合性能是最好的。 1. 安装 在NuGet中为项目安装tencent.rapidjson 2. 引用头文件 #include <rapidjson/document.h> #include <rapidjson/memorystream.h> #…