news 2026/9/11 22:32:40

华为OD机试真题 新系统 2026-08-30 PythonJS【快递驿站计费系统】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
华为OD机试真题 新系统 2026-08-30 PythonJS【快递驿站计费系统】

目录

题目

思路

Code

题目

题目内容:

请开发一个快递驿站计费系统,根据给定的一组快递存取记录,系统计费每位业主要缴纳的总费用,并按总费用从高到低输出。

系统计费规则如下:

免费存放时间为 12 小时,从存件时间开始计时,总存放时间 ⩽12 小时不收费,存放时间 = 取件时间 − 存件时间;

超出免费存放时间的,每 12 小时收取 1 元,不足 12 小时按 12 小时计算,比如存放了 25 个小时,超出免费时间 13 小时,需要收费 2 元;

同一个房间号的业主,可能有多条存取记录,需要将业主所有快递的超时费用累加得到总费用。

输入描述:

输入二维数组,每条记录依次是存件时间、取件时间和房间号。0 <= 存件时间 <= 取件时间 <= 100000,100 < 房间号 < 10000,1 <= 记录数 <= 1000。

输出描述:

输出 [房间号,总费用] 数组,按费用降序;费用相同按房间号升序。

样例 1

输入:

[[100, 110, 1111], [200, 210, 2222], [150, 165, 3333], [180, 190, 1111]]

输出:

[[3333,1],[1111,0],[2222,0]]

样例 2

输入:

[[10, 30, 303], [25, 50, 303], [40, 70, 201], [60, 90, 201], [100, 130, 102], [150, 180, 102]]

输出:

[[102,4],[201,4],[303,3]]

思路

整体思路:逐条计算费用,按房间聚合后双关键字排序。

第一步:每三个整数还原一条存取记录。

第二步:对超过 12 小时的部分除以 12 并向上取整。

第三步:按房间累计,再按费用降序和房间号升序排序。

边界处理:零费用房间仍输出;恰好 12 小时免费,恰好 24 小时收费 1 元。

复杂度分析:时间 O(N+R log R),空间 O(R)。

Code

import re import sys from collections import defaultdict # 输入整数每三个还原为存件时间、取件时间和房间号。 # 同一房间可能出现多次,每处理一条记录就把本单费用加到该房间已有总费用上。 # 循环下标每次增加 3,因此第 i、i+1、i+2 个数字始终属于同一条快递记录。 numbers = list(map(int, re.findall(r"\d+", sys.stdin.read()))) fees = defaultdict(int) for i in range(0, len(numbers), 3): stored, picked, room = numbers[i:i + 3] duration = picked - stored # 12 小时内免费,超时部分按 12 小时一档向上取整。 # 例如存放 25 小时会超时 13 小时,(13+11)/12 的整数除法结果为 2 元。 fees[room] += 0 if duration <= 12 else (duration - 12 + 11) // 12 # 费用降序优先,并列时房间号升序。 # 比较器先看费用;只有费用相等时才比较房间号,避免并列结果顺序不确定。 answer = sorted(fees.items(), key=lambda item: (-item[1], item[0])) # 手动拼接题目要求的无空格二维数组。 # 输出中的每个内层数组依次放房间号和总费用,元素之间只保留题目要求的逗号。 print("[" + ",".join(f"[{room},{fee}]" for room, fee in answer) + "]")

JS

const fs = require("fs"); // 每三个整数依次还原为存件时间、取件时间和房间号。 // 同一房间可能出现多次,每处理一条记录就把本单费用加到该房间已有总费用上。 // 循环下标每次增加 3,因此第 i、i+1、i+2 个数字始终属于同一条快递记录。 const numbers = (fs.readFileSync(0, "utf8").match(/\d+/g) || []).map(Number); const fees = new Map(); for (let i = 0; i + 2 < numbers.length; i += 3) { const duration = numbers[i + 1] - numbers[i], room = numbers[i + 2]; // 12 小时内免费,超时部分按 12 小时向上取整。 // 例如存放 25 小时会超时 13 小时,(13+11)/12 的整数除法结果为 2 元。 const fee = duration <= 12 ? 0 : Math.ceil((duration - 12) / 12); fees.set(room, (fees.get(room) || 0) + fee); } // 费用降序优先,并列时房间号升序;JSON 输出紧凑格式。 // 输出中的每个内层数组依次放房间号和总费用,元素之间只保留题目要求的逗号。 // 比较器先看费用;只有费用相等时才比较房间号,避免并列结果顺序不确定。 const answer = [...fees].sort((a, b) => b[1] - a[1] || a[0] - b[0]); console.log(JSON.stringify(answer));

【华为od机试真题Python+JS+Java+Go合集】【超值优惠】:Py/JS/Java/Go合集

【华为od机试真题Python】:Python真题题库

【华为od机试真题JavaScript】:JavaScript真题题库

【华为od机试真题Java&Go】:Java&Go真题题库

【华为od机试真题C++】:C++真题题库

【华为od机试真题C语言】:C语言真题题库

【华为od面试手撕代码题库】:面试手撕代码题库

【华为od机试面试交流群】【文章底部有二维码链接,可扫码加交流群】

华为OD机试:二本院校有机会吗? 有机会,但不大,大神除外!机考分数越高越好,所以需要提前刷题。机考通过后,如果没有收到面试邀请,也不要着急,非目标院校面试邀请发的时间比较晚。非目标院校今年有点难,机试至少要考到350分,所以需要疯狂刷题,华为OD机考是有题库的,最好在考前完所有题库题目。华为OD机试:跨专业可以参加华为OD可以,但是如果你的本科院校比较差,上岸概率不大。华为OD机试:华为OD简历被锁定机试通过,性格测试也通过,但是没人联系面试,发现简历被锁定。此时需要主动去联系HR。让他帮助你查询原因。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/11 22:31:11

GESP C++二级认证考试判断题备考指南与解析

1. GESP C二级认证考试概述GESP&#xff08;Grade Examination of Software Programming&#xff09;是由中国计算机学会&#xff08;CCF&#xff09;主办的编程能力等级认证考试。作为国内权威的编程能力测评体系&#xff0c;GESP认证分为多个级别&#xff0c;其中C二级认证面…

作者头像 李华
网站建设 2026/9/11 22:28:38

GPT Image 2.5 来了!独立开发者用它搭电商图片生成系统,真香

我平时就喜欢捣鼓AI工具搞点副业。今天OpenAI刚放了 Images 2.5&#xff0c;我第一时间上手试了&#xff0c;感觉对电商图片生成特别友好。细节更锐、灯光更自然、编辑更稳&#xff0c;还快了最多50%。今天就从我这个小开发者的角度&#xff0c;聊聊模型特性&#xff0c;以及怎…

作者头像 李华
网站建设 2026/9/11 22:24:26

STM32三相SPWM逆变电源设计:从原理到Altium Designer落地

简介&#xff1a;一套基于STM32F103C8T6单片机的三相SPWM逆变电源完整设计资源&#xff0c;涵盖Altium Designer硬件工程与Keil软件源码&#xff0c;面向嵌入式、电力电子方向的学习者&#xff0c;也可供逆变器项目开发者作为参考模板&#xff0c;解决三相SPWM逆变电源从原理图…

作者头像 李华