158. 24年10月-华为留学生-1.最后超时的定时任务索引号

难度 3
  • 标签:
  • 大厂笔试真题华为
题目描述
题解
题库

24年10月-华为留学生-1.最后超时的定时任务索引号

题目内容

有这样一个定时器系统:
(1) 该系统精度为1刻度,可容纳n个超时任务(即容量为n);
(2) 每个任务里包含该任务超时时刻t(当系统时钟到达t时,该任务开始执行),t为正整数;
(3) 同一时刻超时的任务按照加入系统的先后顺序依次执行;
(4) 当定时器系统中任务数不足n个时,可直接添加定时任务;
(5) 当定时器系统中任务数达到n个时,若待添加任务的超时时刻为ti,系统中最后执行的任务的超时时刻为tj,

  • 如果ti > tj,丢弃待添加的任务;
  • 否则丢弃系统中最晚执行的超时任务,并将待添加任务加入系统。

现给定该定时器系统容量n,短时内(不到1刻度)依次向该定时器系统添加m个定时任务tasks,假定当前时钟为0时刻,所有任务尚未超时。请输出该定时器系统中最后超时的任务索引号(下标从0开始)。若有多个任务同时超时,输出最大的索引号。

输入描述

第一行:定时器系统容量n;1 ≤ n ≤ 10³
第二行:定时任务数m;1 ≤ m ≤ 10⁶
第三行:定时任务列表tasks,空格分隔;1 ≤ tasks[i] ≤ 10⁵

输出描述

最后超时的任务索引号(下标从0开始)。

样例1

输入

2
12
1 2 3 4 6 19 20 21 22 23 25 1

输出

11

说明
定时器系统容量为2,最多容纳2个定时任务,因此最终定时器里只会存在两个任务: 分别是1(索引号0)、1(索引号11),这两个任务同时超时,题目要求返回更大的索引,因此返回11

样例2

输入

1
2
10 2

输出

1

说明
定时器系统容量为1,最多容纳1个定时任务,因此最终定时器里只会存在1个任务: 2: 2对应索引号为1,因此返回1

样例3

输入

20
5
1 2 3 4 5

输出

4

说明
定时器系统容量为20,最多容纳20个定时任务,而添加的任务数为5,没有超过定时器系统规格,因此最终定时器里会 存在以下任务:1 2 3 4 5; 5最晚超时,因此返回5对应的下标4