算法每一题,成长每一天~
C0E29 手机App防沉迷系统
真题链接:【持续更新】2024华为 OD 机试E卷 机考真题库清单(全真题库)
思路
Java
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.Comparator;
import java.util.Scanner;
import java.util.TreeMap;
public class C0E29 {
final static DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("HH:mm");
public static LocalTime parse(String s) {
return LocalTime.parse(s, FORMATTER);
}
public static boolean between(LocalTime start, LocalTime end, LocalTime target) {
return !target.isBefore(start) && !target.isAfter(end);
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = Integer.parseInt(in.nextLine());
String[] apps = new String[n];
for (int i = 0; i < n; i++) {
apps[i] = in.nextLine();
}
LocalTime targetTime = parse(in.nextLine());
TreeMap<Integer, String> treeMap =
new TreeMap<>(Comparator.reverseOrder());// 优先级高到低
for (String app : apps) {
String[] split = app.split(" ");
// 时间段内,且没有同优先级的app
if (between(parse(split[2]), parse(split[3]), targetTime)) {
int priority = Integer.parseInt(split[1]);
if (!treeMap.containsKey(priority)) {
treeMap.put(priority, split[0]);
}
}
}
if (treeMap.isEmpty()) {
System.out.println("NA");
} else {
System.out.println(treeMap.firstEntry().getValue());
}
}
}
总结
1、LocalTime.parse()
2、TreeMap 排序
算法要多练多练多练!!