洛谷链接:https://www.luogu.com.cn/problem/P1803
思路:按结束时间从小到大排序,结束时间从0开始比较下一个的开始时间,小于则ans++
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n=in.nextInt();
Time[] time=new Time[n];
int t=0;
int ans=0;
for(int i=0;i<n;i++) {
int s=in.nextInt();
int e=in.nextInt();
time[i]=new Time(s,e);
}
in.close();
Arrays.sort(time,new Compare()); //按尾排序
for(int i=0;i<n;i++) {
if(t <= time[i].s) { //前一个数的尾小于 当前的头
ans++;
t=time[i].t; //取尾
}
}
System.out.println(ans);
}
}
class Time{
public int s; //开始时间
public int t; //结束时间
public Time(int s,int t){
this.s=s;
this.t=t;
}
}
class Compare implements Comparator<Time>{
public int compare(Time t1,Time t2) {
return t1.t-t2.t;
}
}