第一题
给定一秒可以处理的任务数,然后给定n个任务,代表每秒新增的任务数
1 2 3 4 5 6 7 8 9 10 11
| 3 5 1 2 3 4 5 代表的意思就是,每秒最多处理五个,然后有五个任务,顺次执行 1s:处理第一个任务 由于任务数量为1可以直接处理 2s:小于3也可以直接处理 3s:同上 4s:由于最多只能处理3个,所以还剩一个未处理的到下一秒 5s:需要处理新增的5个任务和上次剩的1个共六个,最多只能处理三个,所以还剩三个 6s:处理上次剩的三个,而且没有新增的,全部处理完 结论就是,如果本次处理不了有剩余的就会加入下一次的处理
|
代码处理的就是处理数组的每一个数据,如果有剩余的任务数,就加到下一个任务中,最后在计算最终剩余的数量可以几轮处理完,re的含义就是本轮剩余的任务数.
第二题
题目大意为,给长度为100的区间,然后会占用里面部分空间,求在剩余的空间中,是否可以找到 分配空间足够大 而且 最接近申请空间大小的位置
每一个空间都是由两部分组成,偏移量和大小,就相当于起始位置和大小,所以对每个内存都设置一个结构体,包含这两个信息
下面是具体的介绍
屏幕截图 2024-05-26 112543
屏幕截图 2024-05-26 112651
屏幕截图 2024-05-26 112726
屏幕截图 2024-05-26 112802
屏幕截图 2024-05-26 112832
第三题
就是给你一系列数组,然后要求合并数组
1 2 3 4 5 6 7 8
| 题目中给的是二维数组 然后合并二维数组里面的每一项 比如二维数组为[[1,4],[2,5],[7,9],[10,15]] 则合并后的区间为[[1,5],[7,9],[10,15]] 首先就是先排序二维数组里面的顺序,排序的原则为起点在前面的优先 注:我这里本来打算用c++进行二维数组排序,然后有些问题,所以采取python,要是问道你为什么换语言,你可以说py在这里进行数组排序比较方便 ans为最终结果数组,pre是上一个时间段,cur为当前时间段 然后你可以模拟一下情况,假如当前的头在上一个的尾巴前面,就说明重合,可以合并,如果不重合,说明时间中间存在空白区域,就可以直接加入到结果数组 最后返回的就是答案了
|