
【头条笔试T2】
输入处理:首先读取输入数据,包括每一批文件的到达时间和数量。然后将这些数据按照到达时间从小到大排序,以便我们可以按时间顺序处理每一批文件。 模拟传输过程:我们需要跟踪当前队列中的文件数量,以及队列中文件堆积的最大数量。对于每一批文件,计算它到达时队列中已经处理的情况: 计算完成时间:完成时间是最后一个文件到达时间再加上处理完它们所需的时间。 读取输入:读取输入的文件数n和每个文件的到达时间和数量。 排序文件信息:按到达时间从小到大排序,确保我们可以依次处理每个文件。 初始化变量:记录当前队列中的文件数量 处理每一批文件:遍历每一批文件,计算时间差,判断是否需要更新队列数量,并检查最大值。 计算完成时间:最后一个文件到达时间加上有有处理时间就是完成时间。 输出结果:打印完成时间和最大队列数量。
发布日期:2021-05-28 16:52:36
浏览次数:36
分类:精选文章
本文共 1913 字,大约阅读时间需要 6 分钟。
为了解决这个问题,我们需要计算两个关键指标:所有文件被传输完的时刻,以及在传输过程中队列中文件堆积的最大数量。
方法思路
- 如果当前文件到达时间足够早,队列中的文件都能被处理完,此时新文件直接加入队列。
- 否则,新文件会排在队列后面,导致队列中的文件数量增加。
解决代码
import java.util.Comparator;import java.util.Vector;public class Solution { public static void main(String[] args) { int n = Integer.parseInt(args[0]); Vectorvec_file = new Vector<>(); for (int i = 1; i < n; i++) { int t = Integer.parseInt(args[i]); int c = Integer.parseInt(args[i + 1]); vec_file.add(new FileInfo(t, c)); } vec_file.sort((a, b) -> a.time - b.time); long timeLast = vec_file.get(0).time; long haveNum = vec_file.get(0).c; long maxNum = haveNum; long timeCurrent = timeLast; for (int i = 1; i < n; i++) { long currentTime = vec_file.get(i).time; long diffTime = currentTime - timeLast; if (diffTime >= haveNum) { haveNum = vec_file.get(i).c; } else { haveNum = (haveNum - diffTime) + vec_file.get(i).c; } if (haveNum > maxNum) { maxNum = haveNum; } timeLast = currentTime; timeCurrent += haveNum; } long finishTime = timeCurrent; System.out.println(finishTime + " " + maxNum); } static class FileInfo { int time; int c; FileInfo(int t, int c) { this.time = t; this.c = c; } }}
代码解释
haveNum
和最大队列数量maxNum
,以及当前时间timeLast
。该方法确保了按时处理每一批文件,并正确计算出传输完成时间和队列最大数量,能够在较大的数据范围内高效运行。
发表评论
最新留言
感谢大佬
[***.8.128.20]2025年05月06日 08时44分41秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
访问servlet时弹出文件下载框解决方法
2019-03-13
Java中的注释
2019-03-13
cookie、session、token
2019-03-13
IDEA-@Slf4j和log标签&@Data(Lombok)无效
2019-03-13
Thymeleaf 生成下标,索引,使用Stat变量
2019-03-13
全局变量初始化顺序的不确定性引发的bug
2019-03-13
ValueError: Unexpected end of file.
2019-03-13
六、登录(二)
2019-03-13
初始微服务---Springcloud发展【第一期】
2019-03-13
RAFT 拜占庭将军 共识算法
2019-03-13
UE4 错误列表 error码(只记录我遇到的情况,持续添加,未完成)
2019-03-13
【.net+jquery】绘制自定义表单(含源码)
2019-03-13
【Jquery】获取当前窗口的宽度值/高度值
2019-03-13
Android 架构组件 – 让天下没有难做的 App
2019-03-13
启动MongoDB出现1053错误
2019-03-13
Flask操作SQLAlchemy
2019-03-13
网络对抗技术-Exp2-后门原理与实践 20181314
2019-03-13