华为OD E卷(100分)37-考勤信息

embedded/2024/12/29 6:36:36/

前言

        工作了十几年,从普通的研发工程师一路成长为研发经理、研发总监。临近40岁,本想辞职后换一个相对稳定的工作环境一直干到老, 没想到离职后三个多月了还没找到工作,愁肠百结。为了让自己有点事情做,也算提高一下自己的编程能力,无聊之余打算用一些大厂的编程题练练手。希望通过这些分享能够帮到一些人,也希望能和看到此文的大神们沟通交流,提升自己,更希望在此期间能够找到一份理想的工作。

题目描述

        K小姐是一家公司的人力资源经理,他需要根据员工的出勤记录来决定是否发放考勤奖励。公司规定了以下出勤状态:

  1. absent:缺勤
  2. late:迟到
  3. leaveearly:早退
  4. present:正常出勤

        员工获得考勤奖励需满足以下全部条件:

  1. 缺勤次数不超过 1 次;
  2. 没有连续的迟到或早退;
  3. 任意连续7 天内,缺勤、迟到和早退的次数总和不超过 3 次。

        请你帮助K小姐编写一个程序,判断每位员工是否能获得考勤奖励。

输入

第一行包含一个正整数n,表示员工的总数。
接下来 n 行,每行包含若干个空格分隔的字符串,表示一名员工的出勤记录。

输出

        输出n 行,每行为 true 或 false,表示对应的员工是否能获得考勤奖励。

示例 

示例1

输入
2
present 
present present
输出

true
true

说明

两名员工的出勤记录都满足获得奖励的条件,因此输出两个 true。

示例2

输入
2
present
present absent present present leaveearly present absent
输出

true
false

说明

第一名员工满足条件,输出 true。第二名员工有 2 次缺勤,不满足条件 1,因此输出 false。

数据范围

1≤n≤100
每个员工的出勤记录不超过1000 条。

解题思路

        滑动窗口。

题解

Java实现

package huawei.e100;import java.util.Scanner;/**
* @author arnold
* @date 2024年12月24日
* 考勤信息
*/
public class T37 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);while(sc.hasNext()) {int n = sc.nextInt();sc.nextLine();for (int i = 0; i < n; i++) {String[] kq = sc.nextLine().split(" ");boolean res = run(kq);if (res) {System.out.println("true");} else{System.out.println("false");}}}}/** 计算考勤是否能得到奖励缺勤次数不超过 1 次;没有连续的迟到或早退;任意连续7 天内,缺勤、迟到和早退的次数总和不超过 3 次。*/static boolean run(String[] kq) {boolean prepresent = true;for (int i = 0; i < kq.length; i++) {int nopresentTime = 0;// 7天时间窗滑块for (int j = i; j < kq.length && j < i+7; j++) {if(kq[j].equals("absent")) {return false;  //缺勤} else if (kq[j].equals("late") || kq[j].equals("leaveearly")) {if (prepresent == false) {return false;  //连续的迟到或早退} else {nopresentTime++;prepresent = false;}} else {prepresent = true;}}if (nopresentTime > 3) {return false;  //任意连续7 天内,缺勤、迟到和早退的次数总和超过 3 次}}return true;}}

 


http://www.ppmy.cn/embedded/149660.html

相关文章

element下拉多选项回显

需求&#xff1a;在新增页面下拉选项多选之后&#xff0c;在编辑页面要回显出来&#xff08;新增页跟编辑页共用一个页面&#xff09; <el-form-item label"锁类型" prop"selectListvalue"><el-selectv-model"selectListvalue"multipl…

C语言-数据结构-图

目录 一,图的概念 1,图的定义 2,图的基本术语 二,图的存储结构 1,邻接矩阵 2,邻接表 三,图的遍历 1,深度优先搜索 2,广度优先搜素 四,生成树和最小生成树 1,生成树的特点: 2,最小生成树 (1)普利姆算法Prim (2)普里姆算法思路 五,最短路径 1,Dijkstra算法 2,Fl…

新浪微博Java开发面试题及参考答案

怎么判断两个链表是否相交?怎么优化? 判断两个链表是否相交可以采用多种方法。 一种方法是使用双指针。首先分别遍历两个链表,得到两个链表的长度。然后让长链表的指针先走两个链表长度差的步数。之后,同时移动两个链表的指针,每次比较两个指针是否指向相同的节点。如果指…

基于Spring Boot的高校请假管理系统

一、系统背景与意义 随着高校规模的扩大和学生数量的增加&#xff0c;传统的请假管理方式已经难以满足高校管理的需求。人工请假流程繁琐、耗时长&#xff0c;且容易出现信息错误或遗漏。因此&#xff0c;开发一套基于Spring Boot的高校请假管理系统具有重要意义&#xff0c;它…

AIGC在电影与影视制作中的应用:提高创作效率与创意的无限可能

云边有个稻草人-CSDN博客 目录 引言 一、AIGC在剧本创作中的应用 1.1 剧本创作的传统模式与挑战 1.2 AIGC如何协助剧本创作 1.3 未来的剧本创作&#xff1a;AI辅助的协同创作 二、AIGC在角色设计中的应用 2.1 传统角色设计的挑战 2.2 AIGC如何协助角色设计 三、AIGC在…

识别后端返回的字符串中携带的空格 以及换行 要在前端展示 v-html

1.直接使用v-html <view v-html"formattedIssueDesc"></view> 2.由于直接使用 v-html 指令可能不会将 \n 解释为换行&#xff0c;所以就有第二种 <template><view v-html"formattedIssueDesc"></view> </template&…

HuaWei、NVIDIA 数据中心 AI 算力对比

HuaWei Ascend 910B Ascend 910B 是 HuaWei 于 2023 年推出的高性能 AI 处理器芯片&#xff0c;其对标产品为 Nvidia A100/A800&#xff0c;其算力表现如下&#xff1a; 峰值算力&#xff1a;Ascend 910B 的半精度&#xff08;FP16&#xff09;算力达到 256 TFLOPS&#xff08;…

MySQL数据库函数——日期函数

常用的日期函数 函数功能curdate()返回当前日期curtime()返回当前时间now()返回当前日期和时间year(date)获取指定date的年份month(date)获取指定date的月份day(date)获取指定date的日期date_add(date,interval expr type)返回一个日期/时间值加上一个时间间隔expr后的时间值d…