華為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
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/81392.shtml
英文地址,請注明出處:http://en.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支持…