题解 | 活动安排
活动安排
https://www.nowcoder.com/practice/16d971e9e42e4f3b9b1e2b8794796a43
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n = input.nextInt();
ArrayList<int[]> list = new ArrayList<>();
for (int i = 0; i < n; i++) {
int[] arr = new int[2];
arr[0] = input.nextInt();
arr[1] = input.nextInt();
list.add(arr);
}
//这一步最重要,将给的活动排序,排序规则为按活动结束时间从小到大排
//这样做最贪
list.sort((o1, o2) -> {
int num = o1[1] - o2[1];
// num = num == 0 ? (o1[0] - o2[0]) : num;//实际上,开始时间是不需要排序的
return num;
});
int end = 0;
int sum = 0;
for (int[] ints : list) {
if (ints[0] >= end) {//开始时间和上一个的结束时间对比,只要大于就是不重叠的(因为结束时间已经排好序了),画个时间轴出来就很容易懂了。
sum++;
end = ints[1];
}
}
System.out.println(sum);
}
}
阿里云工作强度 611人发布