华为OD机试真题——考勤信息(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现

在这里插入图片描述

2025 A卷 100分 题型

本专栏内全部题目均提供Java、python、JavaScript、C、C++、GO六种语言的最佳实现方式;
并且每种语言均涵盖详细的问题分析、解题思路、代码实现、代码详解、3个测试用例以及综合分析;
本文收录于专栏:《2025华为OD真题目录+全流程解析+备考攻略+经验分享》

华为OD机试真题《考勤信息》:


文章快捷目录

题目描述及说明

Java

python

JavaScript

C++

C

GO

更多内容


题目名称:考勤信息


  • 知识点:字符串处理、滑动窗口、逻辑判断
  • 时间限制:1秒
  • 空间限制:256MB
  • 限定语言:不限

题目描述

公司用一个字符串来表示员工的出勤信息,包含以下四种标记:

  • absent:缺勤
  • late:迟到
  • leaveearly:早退
  • present:正常上班

出勤奖判定条件

  1. 缺勤不超过一次
  2. 没有连续的迟到/早退(即相邻记录不能同时为lateleaveearly);
  3. 任意连续7次考勤中,缺勤/迟到/早退的总次数不超过3次

输入描述

  • 第一行为记录条数NN >= 1);
  • 后续N行为考勤记录字符串(长度 < 10000,无非法输入)。
    示例:
2  
present  
present absent present present leaveearly present absent  

输出描述
对每组考勤记录,输出true(可获奖)或false(不可获奖),结果用空格分隔。
示例输出:

true false  

Java

问题分析

题目要求根据员工的考勤记录判断其是否符合获得出勤奖的条件。需满足以下三个条件:

  1. 缺勤不超过一次
  2. 没有连续的迟到或早退
  3. 任意连续7次考勤中,违规次数(缺勤/迟到/早退)不超过3次

解题思路

  1. 条件一:遍历所有记录,统计缺勤次数。若超过1次,直接返回false
  2. 条件二:遍历相邻记录,若相邻两个记录均属于迟到或早退,返回false
  3. 条件三:若记录数≥7,使用滑动窗口检查每个连续7次考勤的违规次数。若任何窗口超过3次,返回false

代码实现

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int N = Integer.parseInt(scanner.nextLine());  // 读取测试用例数StringBuilder result = new StringBuilder();for (int i = 0; i < N; i++) {int n = Integer.parseInt(scanner.nextLine());  // 读取当前用例的记录数String[] records = new String[n];for (int j = 0; j < n; j++) {records[j] = scanner.nextLine().trim();  // 读取每条记录}result.append(checkAttendance(records) ? "true " : "false ");}System.out.println(result.toString().trim());scanner.close();}private static boolean checkAttendance(String[] records) {int n = records.length;int absentCount = 0;int[] violations = new int[n];  // 标记是否为违规记录(absent/late/leaveearly)// 检查条件1和条件2,并构建violations数组for (int i = 0; i < n; i++) {String record = records[i];// 条件1:统计缺勤次数if (record.equals("absent")) {absentCount++;if (absentCount > 1) return false;}// 构建violations数组(1表示违规)violations[i] = (record.equals("absent") || record.equals("late") || record.equals("leaveearly")) ? 1 : 0;// 条件2:检查相邻记录是否均为迟到/早退if (i > 0) {String prev = records[i - 1];boolean prevViolate = prev.equals("late") || prev.equals("leaveearly");boolean currViolate = record.equals("late") || record.equals("leaveearly");if (prevViolate && currViolate) return false;}}// 条件3:滑动窗口检查连续7次考勤if (n >= 7) {int windowSum = 0;// 初始化第一个窗口(前7个记录)for (int j = 0; j < 7; j++) {windowSum += violations[j];}if (windowSum > 3) return false;// 滑动窗口,每次移动一步for (int j = 7; j < n; j++) {windowSum += violations[j] - violations[j - 7];if (windowSum > 3) return false;}}return true;}
}

代码解析

  1. 输入处理

    • scanner.nextLine()读取输入,处理多个测试用例。
    • records数组存储每个用户的考勤记录。
  2. 条件一检查

    • 统计absent次数,超过1次直接返回false
  3. 条件二检查

    • 遍历相邻记录,若当前和前一个记录均属于迟到/早退,返回false
  4. 条件三检查

    • 构建violations数组,标记违规记录。
    • 使用滑动窗口计算每个连续7次考勤的违规次数总和。
    • 若任何窗口总和超过3,返回false

示例测试

  1. 示例输入1
    输入:

    2  
    present  
    present absent present present leaveearly present absent  
    

    输出:true false
    解释

    • 第一个用例无缺勤且满足所有条件。
    • 第二个用例缺勤两次,违反条件一。
  2. 测试用例2
    输入:

    1  
    late leaveearly  
    

    输出:false
    解释:相邻记录均为迟到/早退,违反条件二。

  3. 测试用例3
    输入:

    7  
    absent late late present present present present  
    

    输出:false
    解释:连续7次考勤中违规次数为3(absent + 2次late),满足条件三。


综合分析

  1. 时间复杂度

    • O(N),其中N为记录数。每个记录仅遍历两次(条件检查+滑动窗口)。
  2. 空间复杂度

    • O(N),存储考勤记录和违规标记数组。
  3. 正确性

    • 严格按题意分步骤检查三个条件,确保逻辑正确。
  4. 优势

    • 高效性:滑动窗口将条件三的时间复杂度优化为O(N)。
    • 可读性:代码结构清晰,条件处理明确。
  5. 适用性

    • 完全支持题目约束(记录数≤1e5),满足时间和空间要求。

python

问题分析

题目要求判断员工的考勤记录是否符合出勤奖条件,需满足以下三个条件:

  1. 缺勤不超过一次absent次数 ≤ 1);
  2. 无连续迟到/早退(相邻记录不能同为 lateleaveearly);
  3. 任意连续7次考勤中违规次数(缺勤、迟到、早退)不超过3次

解题思路

  1. 条件一:统计所有记录中 absent 的次数,若超过1次直接判定失败。
  2. 条件二:遍历相邻记录,检查是否存在连续的 lateleaveearly
  3. 条件三:使用滑动窗口检查所有长度为7的连续窗口,统计违规次数是否超过3次。

代码实现

import sysdef check_attendance(records):# 条件一:缺勤次数不超过1次absent_count = records.count('absent')if absent_count > 1:return False# 条件二:检查相邻记录是否均为迟到/早退for i in range(

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

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

相关文章

Python语法规则:缩进、代码块与空格规范

在众多编程语言中&#xff0c;Python 以其“简洁而优雅”的语法风格独树一帜。然而&#xff0c;这种“简洁”并非轻率随意&#xff0c;而是建立在一套严谨的语法哲学之上。缩进、代码块与空格规范&#xff0c;不仅是 Python 的语法基础&#xff0c;更是它传达代码意图、塑造开发…

Baklib智能知识管理增效方案

Baklib智能知识管理核心优势 基于Baklib构建的知识中台&#xff0c;通过多维度结构化处理与智能语义引擎&#xff0c;重构了企业知识管理范式。该系统支持文档、表格、音视频等多格式内容聚合&#xff0c;利用自然语言处理技术实现知识资产的自动化分类与标签匹配&#xff0c;…

【导航信号模拟器】【MATLAB APP】MATLAB AppDesigner基本使用教程

MATLAB AppDesigner基本使用教程 作者&#xff1a;齐花Guyc(CAUC) 文章目录 MATLAB AppDesigner基本使用教程一、创建项目二、编写回调函数1. 按钮——获取选择文件路径2. 按钮——保存文件路径3. 单选按钮组4. 复选框5. 文本框显示 三、打包APP 一、创建项目 建立空文件夹—…

ImgShrink:摄影暗房里的在线图片压缩工具开发记

我正在参加CodeBuddy「首席试玩官」内容创作大赛&#xff0c;本文所使用的 CodeBuddy 免费下载链接&#xff1a;腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴 在一次 CodeBuddy 的项目试玩官活动中&#xff0c;我决定构建一个实用又不失视觉特色的小工具——ImgShrink。它…

利用systemd启动部署在服务器上的web应用

0.背景 系统环境&#xff1a; Ubuntu 22.04 web应用情况&#xff1a; 前后端分类&#xff0c;前端采用react&#xff0c;后端采用fastapi 1.具体配置 1.1 前端配置 开发态运行&#xff08;启动命令是npm run dev&#xff09;,创建systemd服务文件 sudo nano /etc/systemd/…

在vue3中使用Cesium的保姆教程

1. 软件下载与安装 1. node安装 Vue.js 的开发依赖于 Node.js 环境&#xff0c;因此我们首先需要安装 Node.js。Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境&#xff0c;它允许你在服务器端运行 JavaScript 代码&#xff0c;同时也为前端开发提供了强大的工具支…

基于LabVIEW的双音多频系统设计

目录 1 系统设计概述 双音多频(Dual-Tone Multi-Frequency, DTMF)信号是一种广泛应用于电话系统中的音频信号,通过不同的频率组合表示不同的按键。每个按键对应两个频率,一个低频和一个高频,共同组成独特的信号。在虚拟仪器技术快速发展的背景下,利用LabVIEW等图形化编程…

【笔记】端口转发

echo off :loop ssh -N -L 13306:192.168.0.3:23306 -o ServerAliveInterval60 admin192.168.0.2 timeout /t 5 goto loop 代码功能剖析 1、基础设置&#xff1a; echo off 此命令的作用是让批处理脚本在执行过程中不显示命令行&#xff0c;从而使输出更为简洁。 2、定义循环…

Flink Table SQL

Apache Flink 提供了强大的 Table API 和 SQL 接口&#xff0c;用于统一处理批数据和流数据。它们为开发者提供了类 SQL 的编程方式&#xff0c;简化了复杂的数据处理逻辑&#xff0c;并支持与外部系统集成。 &#x1f9e9; 一、Flink Table & SQL 核心概念 概念描述Table…

【AWS入门】Amazon SageMaker简介

【AWS入门】Amazon SageMaker简介 [AWS Essentials] Brief Introduction to Amazon SageMaker By JacksonML 机器学习(Machine Learning&#xff0c;简称ML) 是当代流行的计算机科学分支技术。通常&#xff0c;人们在本地部署搭建环境&#xff0c;以满足机器学习的要求。 AWS…

解决 Go 构建依赖超时问题:使用 GOPROXY 提升 Docker 构建稳定性

目录 解决 Go 构建依赖超时问题&#xff1a;使用 GOPROXY 提升 Docker 构建稳定性 ✅ 问题背景 ✅ 正确做法&#xff1a;多阶段中在 Go 阶段设置 GOPROXY ✅ 实际收获 &#x1f9ea; 小技巧&#xff1a;验证 GOPROXY 设置是否生效 ✅ 总结 解决 Go 构建依赖超时问题&#x…

【周输入】510周阅读推荐-3

前文 【周输入】510周阅读推荐-1-CSDN博客 【周输入】510周阅读推荐-2-CSDN博客 本次推荐 目录 前文 本次推荐 算法技术 模型产品 算法技术 vLLM和DeepSpeed部署模型的优缺点_vllm deepspeed-CSDN博客 优点缺点总结vLLM 适用于推理 优化内存管理 高效并行化 功能单…

Kubernetes控制平面组件:Kubelet详解(七):容器网络接口 CNI

云原生学习路线导航页&#xff08;持续更新中&#xff09; kubernetes学习系列快捷链接 Kubernetes架构原则和对象设计&#xff08;一&#xff09;Kubernetes架构原则和对象设计&#xff08;二&#xff09;Kubernetes架构原则和对象设计&#xff08;三&#xff09;Kubernetes控…

【推荐】新准则下对照会计报表172个会计科目解释

序号 科目名称 对应的会计报表项目 序号 科目名称 对应的会计报表项目   一、资产类     二、负债类   1 1001 库存现金 货币资金 103 2001 短期借款 短期借款 2 1002 银行存款 货币资金 104 2101 交易性金融负债 易性金融负债 3 1012 其他货币资…

MongoDB的安装及简单使用

MongoDB 是一个开源的文档型 NoSQL 数据库​​&#xff0c;由 MongoDB Inc. 开发&#xff0c;专为灵活性和可扩展性设计。 特点&#xff1a; ​​1.文档模型​​&#xff1a;数据以 BSON&#xff08;二进制 JSON&#xff09;格式存储&#xff0c;支持嵌套结构。 ​​2.动态 S…

Gartner《如何将生成式人工智能(GenAI)集成到应用架构》学习心得

针对软件架构师、技术专业人士如何更好的把 GenAI 如何融入解决方案,提升用户体验、生产力并带来差异化成果的趋势,Gartner发布了《Integrating GenAI Into Your Application Architecture》研究报告。 报告首先介绍了 GenAI 的发展背景,指出其已成为主流趋势,大型语言模型…

IDEA - Windows IDEA 代码块展开与折叠(基础折叠操作、高级折叠操作)

一、基础折叠操作 折叠当前代码块&#xff1a;Ctrl - # 操作方式按下 【Ctrl】 键&#xff0c;再按下 【-】 键展开当前代码块&#xff1a;Ctrl # 操作方式按下 【Ctrl】 键&#xff0c;再按下 【】 键折叠所有代码块&#xff1a;Ctrl Shift - # 操作方式按下 【Ctrl】…

基于STM32F103与Marvell88W8686的WIFI无线监控视频传输系统研发(论文)

基于STM32F103与Marvell88W8686的WIFI无线监控视频传输系统研发 中文摘要 在当今社会信息化进程不断加速的时代背景下&#xff0c;众多领域对于监控系统的需求日益增长&#xff0c;像车内安全监控、电梯运行监控等场景都离不开监控系统的支持。过去&#xff0c;不少领域普遍采用…

Java基础知识总结(超详细整理)

一&#xff1a;概述 1.1Java类及类的成员 属性、方法、构造器、代码块、内部类 &#xff08;1&#xff09;数组 java虚拟机内存划分 各区域作用 内存解析 基本使用 两个变量指向一个一维数组 没有new就不会在堆里新开辟空间 &#xff08;2&#xff09;对象数组 &#xff08;3&a…

StarRocks Community Monthly Newsletter (Apr)

版本动态 3.4.3 版本更新 核心功能升级 Routine Load和Stream Load新增Lambda表达式支持&#xff0c;支持复杂的列数据提取 增强JSON数据处理能力&#xff0c;支持将JSON Array/Object转为ARRAY/MAP类型 优化information_schema.task_runs视图查询&#xff0c;新增LIMIT支持…