华为OD机试 2024C卷题库疯狂收录中,刷题点这里
专栏导读
本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷+C卷)》。
刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。
一、题目描述
智能手机方便了我们生活的同时,也侵占了我们不少的时间。“手机Ap防沉迷系统” 能够让我们每天合理的规划手机App使用时间,在正确的时间做正确的事。
它的大概原理是这样的:
1、在一天24小时内,可注册每个App的允许使时段;
2、一个时间段只能使用一个APP, 不能在同时注册App2 和 App3;
3、App有优先级,数值越高,优先级越高。注册使用时段时,如果高优先级的App时间和低优先级的时段有冲突,则系统会自动注销低优先级的时段;
如果App的优先级相同,则后添加的App不能注册。
请编程实现,根据输入数据注册App,并根据输入的时间点,返回时间点注册的App名称,如果该时间点没有注册任何App,请返回字符串“NA"。
数据说明如下
- N行注册数据以空格分隔,四项数依次表示: App名称、优先级、起始时间,结束时间
- 优先级1-5,数字值越大,优先级越高
- 时间格式HH:MM,小时和分钟都是两位,不足两位前面补0
- 起始时间需小于结束时间,否则注册不上
- 注册信息中的时间段包含起始时间点,不包含结束时间点
二、输入描述
第一行表示注册的App数N
第二部分包括N 行,每行表示一条App注册数据
最后一行输入一个时间点,程序即返回注册点可App
三、输出描述
输出一个字符串,表示App名称,或NA表示空闲时间。
1、输入
2
App1 1 09:00 10:00
App2 2 09:10 09:30
09:20
2、输出
App2
3、说明
ApP1和App2的时段有冲突,App2优先级高,注册App2之后,App1自动注销,因此输出App2
四、解题思路
分析题目,简单概括如下:
- 注册信息中的时间段包含起始时间点,不包含结束时间点
- 如果高优先级的App时间和低优先级的时段有冲突,则系统会自动注销低优先级的时段;
- 如果App的优先级相同,则后添加的App不能注册。
五、Java算法源码
public class Test02 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = Integer.valueOf(sc.nextLine());
List<String[]> arrList = new ArrayList<>();
for (int i = 0; i < N; i++) {
String[] arr = sc.nextLine().split(" ");
arrList.add(arr);
}
int time = transfer(sc.nextLine());
// 目标App名称
String target = "NA";
// 符合要求的最高优先级
int maxLevel = 0;
for (int i = 0; i < arrList.size(); i++) {
String[] arr = arrList.get(i);
// 注册信息中的时间段包含起始时间点,不包含结束时间点
if(time >= transfer(arr[2]) && time < transfer(arr[3])){
/**
* 如果高优先级的App时间和低优先级的时段有冲突,则系统会自动注销低优先级的时段;
* 如果App的优先级相同,则后添加的App不能注册。
* 所以此处后遍历的大于maxLevel,才会取值
*/
if(maxLevel < Integer.valueOf(arr[1])){
// 符合要求的最高优先级
maxLevel = Integer.valueOf(arr[1]);
// 目标App名称
target = arr[0];
}
}
}
System.out.println(target);
}
private static int transfer(String time){
return Integer.valueOf(time.replace(":",""));
}
}
六、效果展示
1、输入
4
App1 1 09:00 10:00
App2 2 09:10 09:30
App3 3 09:15 09:20
App4 3 08:00 09:00
09:15
2、输出
App3
3、说明
符合要求的APP有App1、App2、App3。
满足要求的前提下,等级最高的是App3。
🏆下一篇:华为OD机试 - 简易内存池 - 逻辑分析(Java 2024 C卷 200分)
🏆本文收录于,华为OD机试(JAVA)真题(A卷+B卷+C卷)
刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。